PySimpleGUI 学习笔记(纯新手记录,大神请忽视)
学习 Python 主要是开发一些小工具方便工作,代替人工做重复性的工作。开发完后发给同事使用,由于他们电脑没有开发环境所以打包成 exe 文件,默认的界面比较丑,所以学习 GUI 的内容。
安装#
pip 安装 PySimpleGui 库
pip install PySimpleGUI
小例子#
import PySimpleGUI as sg
# 窗口内的所有控件.
layout = [ [sg.Text('Some text on Row 1')],
[sg.Text('Enter something on Row 2'), sg.InputText()],
[sg.Button('Ok'), sg.Button('Cancel')] ]
# 生成窗口
window = sg.Window('Window Title', layout)
# 消息处理和输入消息接收
while True:
event, values = window.read()
if event in (None, 'Cancel'):
break
print('You entered ', values[0])
window.close()
event 和 Values 详解#
当执行 window.read()
函数时,将会返回一个 (event,values)
元组。event
是事件,它可能是一个按钮的按下、列表项的选择等,比如我设置了一个 sg.Submit('提交')
按钮,那么 event 返回的是'提交'
。如果我什么也不填,sg.Submit()
,那么返回默认值'Submit'
,当然界面上显示的也是 Submit。如果用户点击右上角 X 关闭窗口,则是 None
。
注意,默认情况下只有 Button 才能触发事件,然后执行 window.read (),也就是说返回的 event 始终是 button 名。但是如果你给控件加上一个 enable_events=True 参数,那么点击任何控件都可以触发事件了,比如说 sg.Text (‘My one-shot window.’,enable_events=True),那么点击文本也可以触发事件。
values
是一个包含所有输入元素的值的字典。字典使用键来定义词条。如果你的元素没有特定的键,系统为你提供一个键。这些自动编号的键是以 0 开始的。
比如说我有两个输入框,则第一个输入框的值是 values [0],第二个输入框的值是 values [1]
举个栗子:
import PySimpleGUI as sg
layout = [[sg.Text('My one-shot window.')],
[sg.InputText()],
[sg.Submit(), sg.Cancel()]]
window = sg.Window('Window Title', layout)
event, values = window.read()
window.close()
text_input = values[0]
sg.popup('You entered', text_input) # 弹出窗口
如果你想使用自定义 key?很简单,相应位置修改为以下代码:
sg.InputText(key='-IN-')
text_input = values['-IN-']
print(text_input)
如何更新数据?#
下面是一个例子,使用 window[index].update(指定值)
的方法,可以更新 key 为 index 控件的值,当然,指定值可以是另外一个控件的值,一个例子如下:
layout = [[sg.Text('Your typed chars appear here:'), sg.Text(size=(15,1), key='-OUTPUT-')],
[sg.Input(key='-IN-')],
[sg.Button('Show'), sg.Button('Exit')]]
window = sg.Window('Pattern 2B', layout)
while True: # Event Loop
event, values = window.read()
print(event, values)
if event in (None, 'Exit'):
break
if event == 'Show':
# Update the "output" text element to be the value of "input" element
window['-OUTPUT-'].update(values['-IN-'])
window.close()
PS:《手册》中会介绍一个 target 参数
感谢:www.sitstars.com/archives/82/ 大部分转载于此篇文章
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: