跳转到内容

维基少儿:树莓派/树莓派制作图形用户界面 (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/

你的第一个GUI

[编辑 | 编辑源代码]

  1. 从编程菜单中打开Python 3
  2. 点击文件>新建文件,创建一个空白窗口,您将在其中编写您的代码。
  3. 将以下源代码添加到您的文件中。
  4. 保存文件,然后按 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 - 您应该看到一条消息,显示"您按下了按钮"

挑战 - 猫咪名字生成器

[编辑 | 编辑源代码]

按下按钮后,您随机生成的“猫咪名字”将显示在下方。

  1. 更改您的 GUI,使其看起来像这样。您应该能够通过更改您已经拥有的代码来找出如何做到这一点。您可以使用自己的图片!
  2. 在程序开头添加import random这一行,以便我们可以随机选择猫咪的名字。
  3. 在按钮下方添加以下代码以创建一些文本。这就是猫咪的名字将显示的地方,但我们还不知道它是哪个,所以现在我们只是把"..."放在这里。
cat_name = Text(app, text="...")
  1. 在您的现有程序中找到def do_stuff():这行代码。用以下代码替换print("您按下了按钮")这行代码,以从列表中随机选择猫咪的第一个名字。如果您喜欢,可以添加更多不同的名字!
first_name = random.choice(["Fluffy", "Al", "Ginger", "Princess"])
  1. 在它下面再写一行代码,随机选择猫咪的姓氏。确保以last_name =开头,这样我们才能区分它们。
  1. 现在添加一行代码将它们连接在一起,并将结果设置在您之前创建的cat_name文本中。
cat_name.set(first_name + " " + last_name)
  1. 保存并运行您的程序,然后按下按钮,发现您的猫咪化身!

下一步是什么?

[编辑 | 编辑源代码]

guizero的官方网站有用于创建图形用户界面 (GUI) 应用程序的文档。作者设计它用于“高级项目”:https://lawsie.github.io/guizero/

树莓派基金会发布了一本关于guizero的免费 PDF 书籍,名为使用 Python 创建图形用户界面 (2020),作者是 Martin O'Hanlon 和 Laura Sach:https://magpi.raspberrypi.org/books/create-guis

finished-cat-name-generator.py

[编辑 | 编辑源代码]
# 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()
华夏公益教科书