维基少儿:树莓派/树莓派制作图形用户界面 (GUI)
Laura Sach @codeboom – CC-BY-SA 4.0
本研讨会探讨了使用guizero
库创建简单的 Python 图形界面。
guizero
本身是Tkinter图形界面库的替代方案,Tkinter图形界面库包含在Python中。
您可以通过从终端运行pip3
命令来安装guizero
库,这是推荐的方式。
pip3 install guizero
或者,网站上有一个Microsoft Windows安装程序:https://lawsie.github.io/guizero/
- 从编程菜单中打开Python 3
- 点击文件>新建文件,创建一个空白窗口,您将在其中编写您的代码。
- 将以下源代码添加到您的文件中。
- 保存文件,然后按 F5 运行代码。您应该看到一个基本的 GUI!
from guizero import App, Text
app = App("My first GUI")
greeting = Text(app, "Hello!")
app.display()
让我们看看代码行做了什么
from guizero import App, Text
告诉 Python 我们想从guizero
中使用 App 和 Text。
app = App("My first GUI")
创建应用程序(方框部分)并将“我的第一个 GUI”一词放在标题中。
greeting = Text(app, "Hello!")
创建Text
(灰色部分中的“Hello!”一词)并将其添加到应用程序中。每当我们在guizero
中创建新内容时,我们总是将其添加到应用程序中,以便它出现在屏幕上。
app.display()
显示应用程序,并运行循环以更新应用程序(以防有任何更改)。这行代码始终位于最后。
这个文本有点无聊!您可以通过添加一些其他参数来更改文本的大小、颜色和字体。
找到这行代码。
greeting = Text(app, "Hello!")
添加另一个参数将颜色更改为红色(注意美式拼写)。
greeting = Text(app, "Hello!", color="red")
您可以通过在参数之间添加逗号来添加更多参数,如下所示
图片必须为 GIF 格式才能在 GUI 上显示。要显示在 GUI 上的所有项目代码必须放在这两行代码之间。
app = App("My first GUI")
# Put your code for text, pictures etc. here
app.display()
- 导入类 -
from guizero import App, Text , Picture
- 确保您在与 Python 文件相同的文件夹中保存了一个 GIF 图片。
- 将这行代码添加到您的应用程序中(将 cat.gif 替换为您的图片的文件名)。
pic = Picture(app, "cat.gif")
遗憾的是,guizero
无法显示动画 GIF。😟
您可以添加一个按钮,如下所示
通过添加到最上面一行来导入类。
from guizero import App, Text, Picture , PushButton
在程序开头,就在import
语句之后,编写一个函数,该函数将在按下按钮时被调用。我们的示例函数名为do_stuff
,但您可以根据自己的喜好命名它(不要在名称中使用空格或标点符号)。
def do_stuff():
print("You pressed the button ")
确保打印行通过按 Tab ↹ 键进行缩进 - 这很重要!
将按钮代码添加到两行应用程序代码之间,就像图片一样。
button1 = PushButton(app, do_stuff, text="Push me")
通过按 F5 运行您的程序。点击按钮,查看 Python shell - 您应该看到一条消息,显示"您按下了按钮"
。
按下按钮后,您随机生成的“猫咪名字”将显示在下方。
- 更改您的 GUI,使其看起来像这样。您应该能够通过更改您已经拥有的代码来找出如何做到这一点。您可以使用自己的图片!
- 在程序开头添加
import random
这一行,以便我们可以随机选择猫咪的名字。 - 在按钮下方添加以下代码以创建一些文本。这就是猫咪的名字将显示的地方,但我们还不知道它是哪个,所以现在我们只是把
"..."
放在这里。
cat_name = Text(app, text="...")
- 在您的现有程序中找到
def do_stuff():
这行代码。用以下代码替换print("您按下了按钮")
这行代码,以从列表中随机选择猫咪的第一个名字。如果您喜欢,可以添加更多不同的名字!
first_name = random.choice(["Fluffy", "Al", "Ginger", "Princess"])
- 在它下面再写一行代码,随机选择猫咪的姓氏。确保以
last_name =
开头,这样我们才能区分它们。
- 现在添加一行代码将它们连接在一起,并将结果设置在您之前创建的
cat_name
文本中。
cat_name.set(first_name + " " + last_name)
- 保存并运行您的程序,然后按下按钮,发现您的猫咪化身!
guizero
的官方网站有用于创建图形用户界面 (GUI) 应用程序的文档。作者设计它用于“高级项目”:https://lawsie.github.io/guizero/
树莓派基金会发布了一本关于guizero
的免费 PDF 书籍,名为使用 Python 创建图形用户界面 (2020),作者是 Martin O'Hanlon 和 Laura Sach:https://magpi.raspberrypi.org/books/create-guis
# What is your cat name?
# Randomly generates a cat name and displays it on a gui
# Requires guizero - sudo pip3 install guizero
from guizero import App, Text, Picture, PushButton
import random
def cat_name():
first_name = random.choice(["Mr", "Fluffy", "Whiskers", "Ginger", "Tiddles", "Tabitha", "Princess"])
last_name = random.choice(["Bigglesworth", "Snugglybottom", "Padfoot", "McTickles", "Floofyface", "Longtail", "Fluffball", "Hairball", "Fishbreath"])
cat_name.set(first_name + " " + last_name)
app = App("What's your cat name?")
greeting = Text(app, "Your cat name is...", color="green", size="36")
pic = Picture(app, "cat.gif")
generate_name = PushButton(app, cat_name, text="Tell me")
cat_name = Text(app, text="...")
app.display()