Getting started with GUIs1eae257e44aa9d5b
· Introduction
GUI 是GraphicalUser Interface简称,GUI用于你的程序和用户交互,例如按钮,下拉菜单,文本输入等。
· What you will do
本章将使用Python编程制作一个简单的GUI。
· What you will need
Computer(Rpi/windows/mac)
Python 3 guizero
若安装于mac或raspberry设备上,需使用下列命令安装pip:
sudo pip3 install guizero
若使用windows,则需:
python -m pip install -U pip
安装guizero库:
pip install guizero
· Getting started
1.打开Python,新建一个文件,增加一行代码,从guizero库中中导入App类:
from guizeroimport App
2.显示app标题名:
app= App(title="Hello world")
app.display()
保存文件,F5刷新后,GUI将会如下展示:
恭喜你,完成第一步。
· 添加控件
在增加控件至面板前,有如下几个规则:
使用import导入新控件:
from guizeroimport App
1.如需使用文本控件,则需(每一种类型空间只需增加一次,若需添加多个控件,则在后面添加即可):
from guizeroimport App, Text
2增加控件的代码必须在eventloop 开始前增加:
· Text控件
welcome_message= Text(app, text="Welcome to my app")
我们创建了一个名为welcome_message的Text控件,第一个参数定义为app,则表示text控件被app对象所命令,其中可以控制其size,font等其他关键字。
· TextBox控件
my_name = TextBox(app)
· PushButton控件
用于创建一个按钮,当按钮按下时,功能需要被调用,所以我们在app启动前,将函数代码添加进去。
def say_my_name():
welcome_message.set( my_name.get() )
我们需要将TextBox中的输入值显示到Text中,也就是说将welcome_message的值写入到my_name控件中,这里定义了一个 say_my_name函数,set与get方法用于控件值的更新。
增加PushButton控件:
update_text= PushButton(app, command=say_my_name, text="Display myname")
app是boss,command表示按钮按下时,将调用此函数,text则表示PushButton空间上的显示值。
· Slider控件
用于用户控制范围的控件,如调节音量大小。
同样在app启动前,添加函数代码用于被Slider调用:
def change_text_size(slider_value):
welcome_message.font_size(slider_value)
其中有个slider_value参数用于slider控件移动时自动发送当前值至函数。此处则当前值设置成welcome_message的font_size。
text_size= Slider(app, command=change_text_size, start=10, end=80)
增加Slider控件。
· Picture控件
导入一张图片至面板,不过前提只能使用GIF格式,而且生成出来是静态的。将gif图放入代码目录:
my_cat= Picture(app, image="cat.gif")
Congratulations!
from guizero importApp, Text, TextBox, PushButton, Slider, Picture
app = App(title='Hello World')
def say_my_name():
welcome_message.set(my_name.get())
def change_text_size(slider_value):
welcome_message.font_size(slider_value)
welcome_message = Text(app, text='Welcometo my app', size=30, font='Arial', color='#ff4040')
text_size = Slider(app,command=change_text_size, start=10, end=80)
my_name = TextBox(app, width=30)
update_text = PushButton(app,command=say_my_name, text='Display my name')
my_wechat = Picture(app, image='wechat.gif')
app.display()