介绍
PySimpleGUI
是一个 Python 包,可用于使用最简单的代码开发用户界面。尽管很简单,但它可以用来创建复杂而复杂的用户界面。任何程序员,即使他是 Python 新手,也可以PySimpleGUI
在几分钟内轻松学习并开始创建具有漂亮用户界面的 Python 应用程序。
背景
PySimpleGUI
目前支持 4 个 GUI 框架:
PySimpleGUI
PySimpleGUIQt
PySimpleGUIWx
PySimpleGUIWeb
只需很少的更改即可将 GUI 从一个框架移植到另一个框架。某些功能可能由一个框架支持,但其他框架不支持,但总的来说,从一个框架移植到另一个框架很容易,只需对代码进行最少的更改。可以使用import
语句指定要使用的框架。例如,使用PySimpleGUI
,我们可以写import PySimpleGUI as sg
和使用PySimpleGUIQt
,我们可以写import PySimpleGUIQt as sg
和使用PySimpleGUIWeb
,我们可以写import PySimpleGUIWeb as sg
。
使用代码
和其他包一样,PySimpleGUI
可以使用pip
如下命令安装:复制代码
pip install pysimplegui --user
要安装PySimpleGUIWeb
,可以使用以下命令:复制代码
pip install pysimpleguiweb --user
布局
PySimpleGUI
使用列表列表定义布局。主列表中的每个列表定义一行。每行由呈现在单行上的用户界面元素组成。
以下是一些可以在PySimpleGUI
.
sg.Text
: 渲染常量文本sg.InputText
:在运行时接受输入sg.Checkbox
:显示复选框sg.Radio
:显示单选按钮sg.Combo
:将项目列表显示为组合框,其中只能选择一个元素sg.Listbox
:将项目列表显示为列表框。设置select_mode="multiple"
属性允许选择多个元素
例如,以下代码可用于呈现典型的用户界面:
layout = [ [sg.Text("Select a theme: ",size=(15,1)), sg.Combo(sg.theme_list(),key="t",default_value="BlueMono",size=(10,1))], [sg.Text("Enter your name: ",size=(15,1)), sg.InputText(key="n",size=(10,1))], [sg.Checkbox("Capitalize",key="c",size=(15,1))], [sg.Text("Choose your gender: ",size=(15,1)), sg.Radio("Male","g",True,key="g1"), sg.Radio("Female","g",key="g2")], [sg.Text("Choose your qualification: ",size=(15,1)), sg.Combo(qualifications_list,key="q",default_value="Graduate",size=(15,3))], [sg.Text("Choose your hobbies: ",size=(15,1)), sg.Listbox(hobbies_list,key="h",select_mode="multiple",size=(15,3))], [sg.Button("Show",size=(15,1)),sg.Button("Reset",size=(15,1))] ] window = sg.Window("Controls",layout)
上述布局中的第一行包含一个组合框,其中包含使用该sg.theme_list()
函数获得的所有可用主题。其他行定义其他用户界面元素。sg.Window
用于创建标题为“控件”并具有指定布局的窗口。其输出如下:

事件处理
需要一个事件循环来处理事件并读取在运行时输入的输入。可以按如下方式创建事件循环:
while True: event,values = window.read() if event == sg.WINDOW_CLOSED: break if event == "Show": name = values["n"].upper() if values["c"] else values["n"] gender = "Male" if values["g1"] else "Female" qualification = values["q"] hobbies = "" for h in values["h"]: hobbies = hobbies + h + "," hobbies = hobbies.rstrip(",") details = "Name: " + name + "\n" details = details + "Gender: " + gender + "\n" details = details + "Qualification: " + qualification + "\n" details = details + "Hobbies: " + hobbies + "\n" sg.theme(values["t"]) sg.popup(details,title="Details") if event == "Reset": window["n"].update("") window["c"].update(False) window["g1"].update(True) window["q"].update("Graduate") window["h"].update(hobbies_list) window.close()
上述代码中,通过该window.read()
函数获取了按钮点击或窗口关闭事件的信息和输入的数据。如果单击窗口关闭按钮,sg.WINDOW_CLOSED
则触发事件,这会导致控件跳出事件循环并使用该close()
函数关闭窗口。如果单击“ Show
”按钮,Show
则会触发“ ”事件,其中使用字典收集在表单上输入的所有数据并使用该函数values
显示在弹出窗口中。popup()
如果单击“重置”按钮,则会触发“ ”事件,其中所有控件都使用该函数Reset
重置为其默认值。update()
在 ” Show
” 事件中,sg.theme()
功能。

Themes
:主题可用于PySimpleGUI
使用尽可能短的代码显示色彩缤纷、更漂亮的窗口。以下代码行创建了一个包含所有可用主题的组合框。Python复制代码
sg.Combo(sg.theme_list(),key="t",default_value="BlueMono",size=(10,1))
要从组合框中应用选定的主题,可以使用以下代码。Python复制代码
sg.theme(values["t"])
可以使用以下功能预览所有可用的主题sg.theme_previewer()
:Python复制代码
import PySimpleGUI as sg sg.theme_previewer()
上面的代码产生以下输出:
