PySimpleGUI 主要的作用是成为Tkinter, wxPython和PyQt之上的抽象层,可以将其视为Tkinter, wxPython和PyQt的包装器。
PySmpleGUI, 基本上分成三大部份:
所有的部件Element 类似tkinter 中的部件Widget, 同样有一堆选项, 绝大部份的选项都有预设值, 通常, 可能只要设置几项就够用了. 比如按钮, 要设置是上面的文字,字体, 按钮大小, 能产生事件, 按钮代表字串, 其他的PySimpleGUI 会有相对的预设值.
简单的范例如下, 两行文字, 第一行文字后面有个按钮.
还有一些容器的部件, 可以建立更复杂的布局.
import PySimpleGUI as sg
layout = [
[sg.Text('这是第一行, 后面有一按钮', font=font, size = (20, 1)),
sg.Button('结束', font=font, size=(6, 1), enable_events=True, key='Quit')],
[sg.Text('这是第二行', font=font, size=(20, 1))]]
加上以下这一行, 视窗才会真正的建立. 但这样还不行, 因为那只是视窗, 要有事件的处理才能真正算的上是 GUI.
window = sg.Window('这是视窗标题', layout=layout, finalize=True)
所谓的事件, 比如输入设备的动作, 像鼠标, 键盘, 部件的动作, 以及程序的触动等等, 这些全部都使用一个动作来读取, 然后程序的主迴圈不停的循环读取, 再根据事件的种类处理. 范例如下.
# def do_something(value):
# pass
While True:
event, values = window.read()
if event in [None, 'Quit'] # None 是视窗关闭事件, 'Quit' 是布局中按钮的代表字串
break
# elif event == '其他部件的代表字串':
# value = values['其他部件的代表字串']
# do_something(value)
window.close()
就这样, GUI 最基本的轮廓就完成了