作 者:高 亮
更新时间:2021年4月21日
更新说明:后续会陆续将一些实测例子更新到本文档,请大家注意文档更新时间的变化。
图形化界面开发中要解决的共同问题
- 无论用什么编程语言来开发图形化界面,都要解决一些极为关键的问题
- 问题1:如何创建一个窗口?如何关闭窗口?
- 问题2:如何在窗口中放其他组件?比如文本框、按钮等
- 问题3:如何得到窗口内组件与用户交互的数据?
- 问题4:如何将处理过程中、过程后的数据更新到窗口内的组件上?
注:带着上述的问题,我们将结合具体的组件来学习PySimpleGUI库,这样会让我们知道自己在干什么,有一个清晰的思路
安装库
本人在windows系统下的CMD中进行安装,其他系统请参考其他教程。
pip install pysimplegui
官方说明书
最好的教程是官方的说明书,这里给出官方说明文档的地址
在实践中学习
本文的所有示例代码皆为作者个人编辑和整理,欢迎大家转发分享但请注明出处,对于较大的例子我会将其单独整理为代码文件上传到资源区,文中也将只贴出部分重要的代码,但会在对应位置贴出下载链接。
1. 窗口类型
- 短暂性窗口:弹出一个窗口,收集到用户的指令信息后就关掉了
- 持续性窗口:窗口一直存在,用户点击关闭才关掉。可以循环读取和处理用户的交互事件
注:这部分的示例代码暂时无需弄懂语法,看到结果的不同就可以了,具体的组件使用后续会详细说明
短暂性窗口
- 功能:短暂性窗口的使用,点击提交按钮后,用户在输入框中输入的内容被弹出
# 导入库
import PySimpleGUI as sg
# 用列表设置窗口布局
layout = [[sg.Text('短暂性窗口.')],
[sg.InputText()],
[sg.Submit(), sg.Cancel()]]
# 创建主窗口
window = sg.Window('Window Title', layout)
# 读取主窗口的事件和返回值
event, values = window.read()
# 关闭主窗口
window.close()
text_input = values[0] # 获取输入框的值
# 弹出输入的内容
sg.popup('你输入的内容是:', text_input)
持续性窗口
- 功能:持续显示一个窗口,用户点击关闭才退出
import PySimpleGUI as sg
sg.theme('DarkAmber') # Keep things interesting for your users
layout = [[sg.Text('持续性窗口')],
[sg.Input(key='-IN-')],
[sg.Button('提交'), sg.Exit('退出')]]
window = sg.Window('持续性窗口示例', layout)
# 循环刷新窗口并处理事件
while True:
# 读取事件和输入型组件的返回值
event, values = window.read()
print(event, values)
# 点击关闭窗口,退出循环
if event == '提交':
text = values['-IN-']
sg.popup(text)
if event == sg.WIN_CLOSED or event == '退出':
break
# 关闭窗口
window.close()
2. 简单的聊天窗口
- 在这部分内容中,我们将致力于实现一个持续性窗口。窗口中有按钮和文本框两个组件。
- 功能:用按钮来控制文本框内容,点击按钮,将输入框的内容添加到文本框。
# 导入库
import PySimpleGUI as sg
# 添加窗口内的组件,以列表形式封装
# 将窗口分成不同行不同列,一个列表是一行,行内的列表是列
layout = [
#