重置·一个简单的PythonGUI库——PySimpleGUI使用教程
介绍
PySimpleGUI是一个非常适合小白的Python GUI库,其风格简易,入门简单。
仓库地址: https://github.com/PySimpleGUI
文档站:https://pysimplegui.readthedocs.io
安装
首先你的电脑上要提前安装好Python环境,然后在cmd输入以下代码:
1 | pip install PySimpleGUI |
等待安装好即可
入门·简单的GUI程序
GUI布局
我们要先画出GUI的草图以便于自己编写GUI
这里注意要加上它们的属性(第?行,文本/输入框/按钮)
编写代码
然后我们就要开始写代码了。
打开Python文件,导入库:
1 | import PySimpleGUI as sg |
我们看到第一行只有个文本,所以我们使用:
1 | sg.Text('Enter a number') #sg.Text('文本') |
第二行有个输入框,所以我们使用:
1 | sg.Input() |
第三行有个”OK”按钮,所以我们使用:
1 | sg.OK() |
将以上代码合起来,形成:
1 | layout = [ [sg.Text('Enter a Number')], |
现在我们要生成GUI窗口:
1 | GUI = sg.Window('Enter a number example').Layout(layout) |
将上述代码合起来:
1 | import PySimpleGUI as sg |
运行后得到:
在输入框中输入12,返回值:
event : ‘OK’
value : ‘12’
基本变量
以下变量对于大部分的GUI元素适用且常用,请牢记其用法
变量 | 用途 | 备注 |
---|---|---|
text | 显示的文本 | \ |
size | 元素大小 | 无法控制文字大小 |
font | 更改字体 | (字体名,文字大小) |
text_color | 文本颜色 | 例如: ‘red’ |
tooltip | 鼠标悬停时显示的文本 | \ |
key | 当元素被使用时返回值 | 在event变量中返回值 |
主题
因为PySimpleGUI无法使用tk美化包,您只能通过更改主题,设置按钮图片,更改字体等方式美化您的GUI
全局主题设置方法: sg.theme(new_theme)
若要查看所有可用主题以及其预览,请在Python终端输入:
1 | import PySimpleGUI as sg |
或查看图像:
Layout变量
layout变量是用于存储GUI元素的列表,其大致结构如下:
1 | layout=[ |
1 | layout=[ |
sg.Window()
sg.Window()
用于生成一个窗口,其大致用法如下:
1 | sg.Window(title,layout=None,icon=None,size=(None,None)) |
变量 | 用途 | 备注 |
---|---|---|
title | 窗口标题 | \ |
size | 窗口大小 | 无法控制文字大小 |
icon | 图标路径 | 例如:’LOGO.ico’ |
layout | 窗口元素 | 2层列表元素 |
若要使窗口弹出,请按照以下操作执行:
1 | GUI=sg.Window('Test GUI',layout=layout) |
sg.Text()
sg.Text
方法可以在GUI中插入文本,其常用用法为:
1 | sg.Text(text,size=(None,None),font=(None,None),text_color=None) |
变量 | 用途 | 备注 |
---|---|---|
text | 文本内容 | 显示的文本 |
size | 元素大小 | 无法控制文字大小 |
font | 更改字体 | (字体名,文字大小) |
text_color | 文本颜色 | 例如: ‘red’ |
sg.Input()
sg.Text
方法可以在GUI中插入输入框(支持输入一行),其常用用法为:
1 | sg.Text(default_text='',size=(None,None),font=(None,None),text_color=None) |
变量 | 用途 | 备注 |
---|---|---|
default_text | 默认文本 | 可留空 |
size | 元素大小 | 无法控制文字大小 |
font | 更改字体 | (字体名,文字大小) |
text_color | 文本颜色 | 例如: ‘red’ |
sg.Button()
sg.Button
方法可以在GUI中插入按钮,其常用用法为:
1 | sg.Text(button_text='',size=(None,None),font=(None,None),text_color=None,tooltip=None,key=None) |
变量 | 用途 | 备注 |
---|---|---|
default_text | 在按钮上显示的文本 | 可留空 |
size | 元素大小 | 无法控制文字大小 |
font | 更改字体 | (字体名,文字大小) |
text_color | 文本颜色 | 例如: ‘red’ |
tooltip | 鼠标悬停时显示的文本 | \ |
key | 当元素被使用时返回值 | 在event变量中返回值 |
高级用法——按钮图标,需要使用以下值:
1 | sg.Button(tooltip=key, |
其中变量的用法为:
变量 | 用途 | 备注 |
---|---|---|
tooltip | 鼠标悬停时显示的文本 | \ |
key | 当元素被使用时返回值 | 在event变量中返回值 |
button_color | 按钮的颜色 | 此时使用背景色 |
border_width | 按钮边框长 | 此时为0 |
image_filename | 图标位置 | 支持jpg,png |
sg.Menu()
sg.Menu()
方法可以生成一个菜单,其大致用法如下:
1 | sg.Menu(menu_definition, background_color=None, text_color=None, font=None) |
变量 | 用途 | 备注 |
---|---|---|
menu_definition | 菜单内容 | 列表 |
size | 元素大小 | 无法控制文字大小 |
font | 更改字体 | (字体名,文字大小) |
text_color | 文本颜色 | 例如: ‘red’ |
tooltip | 鼠标悬停时显示的文本 | \ |
key | 当元素被使用时返回值 | 在event变量中返回值 |
例如我们可以通过以下方式生成一个菜单
1 | import PySimpleGUI as sg |
实例:
假如我们想要做像https://www.bilibili.com/video/BV1Q64y1975x 一样的答题器,那我们首先还是要画草图
这里直接引用程序主界面:
你可以看到左边布局大致分为(改):
第一行(标题-文本):White_mu真分数的答题器
第二行(文本):White_mu又称为(25分)
第三行(原:按钮/改:输入框)注:PySimpleGUI也可实现此模板,但这里简化
…
第十一行(按钮):提交
于是我们可以写下此代码:
1 | layout = [[sg.Text('欢迎使用White_mu的水粉检测器')], #窗口页面所含内容 |
现在要生成GUI,导入库,生成GUI,与上述代码合并:
1 | import PySimpleGUI as sg #导入PySimpleGUI函数并简化为sg以创立GUI窗口 |
注:这里可以设置窗口的图标,只需要在layout后面加个icon=r'xxx.ico'
即可
要计算分数,我们就要写一个计算分数的函数:
1 | def check(q1, q2, q3, q4): #建立check函数以计算分数 |
为了计算分数,我们还要提取User输入的信息:
1 | event, value = window.Read() #读取输入值 |
现在我们要运行check函数并导入User输入的信息:
1 | if event == 'submit': #当event为submit时,即按下提交按钮时 |
像上图右手边做一个分数反馈弹出窗口:
1 | if s==100: |
与上述代码合并:
1 | if event == 'submit': #当event为submit时,即按下提交按钮时 |
最终现在我们可以得到:
1 | def check(q1, q2, q3, q4): #建立check函数以计算分数 |
运行此程序:
输入正确答案:
输入错误答案:
程序运行非常成功,现在我们要将此程序打包成exe文件
在程序根目录打开cmd,输入(需提前安装pyinstaller库):
1 | pyinstaller -F -i LOGO.ico -w gui.py |
注意:程序LOGO要用到LOGO.ico,所以我们要在生成的exe文件中放入LOGO.ico
这里要用到-w,因为程序运行时不需要用到命令提示符,加上-w,隐藏它
由于exe根目录迟早要放LOGO.ico的,所以-F函数可以省略,让程序运行得更快
-End-