1.说明
能实现Python的图形化界面的库挺多的,比较出名的可能是tkinter、PyQt等,但它们都不够快速,PySimpleGUI就是一个可以让我们快速创建图形界面的库,它整合了 tkinter、Qt、WxPython 和 Remi等库,让我们使用简单代码就能创建出不错的界面
在使用之前,可以先安装一下
pip install pysimplegui
2.主窗口
import PySimpleGUI as sg
layout = [
[sg.Text('个人信息')],
[sg.Text('姓名'), sg.InputText()],
[sg.Text('年龄'), sg.InputText(key="input_age")],
[sg.Button('提交'), sg.Button('取消')]
]
window = sg.Window('填写信息', layout)
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
elif event == "提交":
print(event)
print(values)
elif event == "取消":
break
window.close()
首先要实例化一个Window对象,表示一个界面窗口,但它的构造方法里有几十个参数,我们只指定前两个,分别是窗口标题和窗口布局,布局是一个列表,列表里是各种窗口控件,有了Window对象之后要使用死循环不断调用read()方法,主要作用是监听各种事件,我们通过事件名判断要执行上面代码,如果是关闭窗口则事件名是None,这时候跳出死循环之后调用Window对象的close()方法释放资源,然后程序正常结束就行
3.布局
Window对象的第二个参数是布局,布局要传入一个列表,列表里可以嵌套列表,每一个列表里的元素都会在同一行显示,换句话说,如果想要不同行,那就把它们放在不同的列表里
layout = [
[sg.Text('个人信息')],
[sg.Text('姓名'), sg.InputText()],
[sg.Text('年龄'), sg.InputText(key="input_age")],
[sg.Button('提交'), sg.Button('取消')]
]
4.文本控件(文本控件)
一个图形界面里有各种控件,比如说文本、输入框、按钮、选择框等,但它们很多属性都是共有的,因为它们都继承与Element对象,此处先以Text为例看一下。Text对象主要用于显示文本,Text对象构造方法的参数很多,但常用的不多
sg.Text(
text='个人信息',
size=(10, 2),
font=("黑体", 100),
text_color="#aa99ff",
background_color="gray",
enable_events=True,
auto_size_text=False,
key="txtInfo",
)
5.更新控件
想要更新控件,第一件事就是拿到控件,我们把各种控件通过layout与Window绑定在一起,所以也可以通过中括号的方式取出控件,然后修改控件的属性,但要调用Element对象提供的update()方法才能把修改后的效果更新到界面上。Text是继承Element的,所以它自然也有update()方法
import PySimpleGUI as sg
layout = [
[sg.Text(text='原始信息', key="txtInfo", )],
[sg.Button('修改'), sg.Button('取消')]
]
window = sg.Window('Demo', layout, size=(500, 200))
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
elif event == "修改":
window["txtInfo"].update(
value="修改之后的信息",
text_color="red",
font=("黑体", 20)
)
elif event == "取消":
break
window.close()
6.输入框
输入框也是继承Element对象的,所以key、字体、背景等设置在Text控件那里已经演示了,这里只给Input对象常用的属性
sg.InputText(
default_text="请输入你的名字",
disabled=False,
password_char="*",
justification="left",
)
7.文件选择框
文件选择框有好几种,比如说选择单个文件、选择多个文件、选择文件夹、另存为等,但它们只是对象名不同而已,参数用法都是一样的,所以掌握一个就行了
import PySimpleGUI as sg
layout = [
[
sg.FileBrowse(
button_text="请选择单个文件",
target="single_path",
file_types=(("All Files", "*.png"),),
initial_folder=r"C:\Users\admin\Downloads",
),
sg.InputText(key="single_path"),
],
[
sg.FilesBrowse(
button_text="请选择多个文件",
initial_folder=r"C:\Users\admin\Downloads",
target="multy_path"
),
sg.InputText(key="multy_path")
],
[
sg.FolderBrowse(
button_text="请选择文件夹",
initial_folder=r"C:\Users\admin\Downloads",
target="folder_path"
),
sg.InputText(key="folder_path")
],
[
sg.SaveAs(
button_text="另存为",
initial_folder=r"C:\Users\admin\Downloads",
target="save_as_path"
),
sg.InputText(key="save_as_path")
],
]
window = sg.Window('Demo', layout, size=(500, 200))
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
window.close()
8.设置主题
pysimplegui自带了很多主题,你可以使用预览和查看主题名
import PySimpleGUI as sg
sg.theme_previewer()
print(sg.theme_list())
sg.theme("主题名称")
sg.theme("")
9.打包程序
如果你已经做好了一个漂亮的程序,那肯定少不了打开成EXE文件,这样就可以在没有安装Python的环境下运行程序了。把Python代码打包为可执行程序的方式很多,比如说pyinstaller、py2exe、nuitka等,但既然是使用PysimpleGUI做的,肯定使用对应的打包工具更方便点,这个库是pysimplegui-exemaker,需要安装一下
pip install pysimplegui-exemaker
安装好之后再终端或者命令行窗口打开它
python -m pysimplegui-exemaker.pysimplegui-exemaker
这样我们就可以使用窗口点击需要打开的程序进行打包了
其实pysimplegui-exemaker本质上也是调用一下PyInstaller,所以你当然也可以直接在命令行执行打包命令
pip install PyInstaller
pyinstaller -wF my_program.py
以上代码都是在主线程执行的,如果主线程遇到耗时任务则UI界面就会卡住或者假死,解决方法就是改为多线程,可以参考
【Python】pysimplegui主动事件(多线程执行耗时任务解决主线程卡死问题)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)