介绍

PySimpleGUI是一个非常适合小白的Python GUI库,其风格简易,入门简单。官网/更多介绍:https://pysimplegui.readthedocs.io

安装

首先你的电脑上要提前安装好Python环境,然后在cmd输入以下代码:

1
pip install PySimpleGui

等待安装好即可

使用:

简单使用:

像这篇文章一个极简易上手的 Python GUI 库 - 云+社区 - 腾讯云 (tencent.com)讲的一样,先画出GUI的草图

这里注意要加上它们的属性(第?行,文本/输入框/按钮)

然后我们就要开始写代码了。

打开Python文件,导入库:

1
import PySimpleGUI as sg

我们看到第一行只有个文本,所以我们使用:

1
sg.Text('Enter a number') #sg.Text('文本')

所以其用法为:

第二行有个输入框,所以我们使用:

1
sg.Input()

第三行有个”OK”按钮,所以我们使用:

1
sg.OK()

将以上代码合起来,形成:

1
2
3
layout = [ [sg.Text('Enter a Number')],
[sg.Input()],
[sg.OK()] ]

现在我们要生成GUI窗口:

1
2
event, (number,) = sg.Window('Enter a number example').Layout(layout).Read()
#sg.Window('窗口标题')

按下OK后我们要弹出一个窗口:

1
sg.Popup(event, number)

其中event表示事件,在按下OK后其值为OK,number表示User在文本框输入的数据

所以弹出的窗口就有两值:OK和User输入的数据

将上述代码合起来:

1
2
3
4
5
6
import PySimpleGUI as sg
layout = [ [sg.Text('Enter a Number')],
[sg.Input()],
[sg.OK()] ]
event, (number,) = sg.Window('Enter a number example').Layout(layout).Read()
sg.Popup(event, number)

运行后得到:

在输入框中输入12,弹出:

OK

12

进阶教程:

详见一个极简易上手的 Python GUI 库 - 云+社区 - 腾讯云 (tencent.com),这里不细谈

实例:

假如我们想要做像https://www.bilibili.com/video/BV1Q64y1975x 一样的答题器,那我们首先还是要画草图

这里直接引用程序主界面:

你可以看到左边布局大致分为(改):

第一行(标题-文本):White_mu真分数的答题器

第二行(文本):White_mu又称为(25分)

第三行(原:按钮/改:输入框)注:PySimpleGUI也可实现此模板,但这里简化

第十一行(按钮):提交

于是我们可以写下此代码:

1
2
3
4
5
6
7
8
9
10
11
layout = [[sg.Text('欢迎使用White_mu的水粉检测器')], #窗口页面所含内容
[sg.Text('共4小题,100分')], #文本
[sg.Text('1.请输入White_mu的中文网名')],
[sg.Input()], #输入框,且输入的值在value[0]中
[sg.Text('2.请输入White_mu的工作室口号')],
[sg.Input()],
[sg.Text('3.请输入White_mu的B站UID')],
[sg.Input()],
[sg.Text('4.请输入White_mu的个人主页链接')],
[sg.Input()],
[sg.Button('提交', key='submit')]] #按钮:提交,key='submit':按下后event为submit

现在要生成GUI,导入库,生成GUI,与上述代码合并:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import PySimpleGUI as sg #导入PySimpleGUI函数并简化为sg以创立GUI窗口

layout = [[sg.Text('欢迎使用White_mu的水粉检测器')], #窗口页面所含内容
[sg.Text('共4小题,100分')], #文本
[sg.Text('1.请输入White_mu的中文网名')],
[sg.Input()], #输入框,且输入的值在value[0]中
[sg.Text('2.请输入White_mu的工作室口号')],
[sg.Input()],
[sg.Text('3.请输入White_mu的B站UID')],
[sg.Input()],
[sg.Text('4.请输入White_mu的个人主页链接')],
[sg.Input()],
[sg.Button('提交', key='submit')]] #按钮:提交,key='submit':按下后event为submit

window = sg.Window('White_mu的水粉检测器', layout, icon=r'LOGO.ico') #设置窗口

注:这里可以设置窗口的图标,只需要在layout后面加个icon=r'xxx.ico'即可

要计算分数,我们就要写一个计算分数的函数:

1
2
3
4
5
6
7
8
9
10
11
def check(q1, q2, q3, q4): #建立check函数以计算分数
s=0
if q1=='白沐':
s=s+25
if q2=='咕~咕~咕~':
s=s+25
if q3=='97020216':
s=s+25
if q4=='https://muspace.top':
s=s+25
return s

为了计算分数,我们还要提取User输入的信息:

1
event, value = window.Read() #读取输入值

现在我们要运行check函数并导入User输入的信息:

1
2
if event == 'submit': #当event为submit时,即按下提交按钮时
s = check(value[0], value[1], value[2],value[3]) #运行check函数,并导入输入框的内容,分数值输出到s中

像上图右手边做一个分数反馈弹出窗口:

1
2
3
4
if s==100:
sg.popup('您的分数为100,恭喜您是White_mu的真粉丝,可以领个粉丝牌了', icon=r'icon=LOGO.ico') #弹出窗口
else:
sg.popup('您的分数为', s,'还是/remake吧', icon=r'icon=LOGO.ico')

与上述代码合并:

1
2
3
4
5
6
if event == 'submit': #当event为submit时,即按下提交按钮时
s = check(value[0], value[1], value[2],value[3]) #运行check函数,并导入输入框的内容
if s==100:
sg.popup('您的分数为100,恭喜您是White_mu的真粉丝,可以领个粉丝牌了', icon=r'icon=LOGO.ico') #弹出窗口
else:
sg.popup('您的分数为', s,'还是/remake吧', icon=r'icon=LOGO.ico')

最终现在我们可以得到:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
def check(q1, q2, q3, q4): #建立check函数以计算分数
s=0
if q1=='白沐':
s=s+25
if q2=='咕~咕~咕~':
s=s+25
if q3=='97020216':
s=s+25
if q4=='https://muspace.top':
s=s+25
return s

import PySimpleGUI as sg #导入PySimpleGUI函数并简化为sg以创立GUI窗口

layout = [[sg.Text('欢迎使用White_mu的水粉检测器')], #窗口页面所含内容
[sg.Text('共4小题,100分')], #文本
[sg.Text('1.请输入White_mu的中文网名')],
[sg.Input()], #输入框,且输入的值在value[0]中
[sg.Text('2.请输入White_mu的工作室口号')],
[sg.Input()],
[sg.Text('3.请输入White_mu的B站UID')],
[sg.Input()],
[sg.Text('4.请输入White_mu的个人主页链接')],
[sg.Input()],
[sg.Button('提交', key='submit')]] #按钮:提交,key='submit':按下后event为submit

window = sg.Window('White_mu的水粉检测器', layout, icon=r'LOGO.ico') #设置窗口
event, value = window.Read() #读取输入值

if event == 'submit': #当event为submit时,即按下提交按钮时
s = check(value[0], value[1], value[2],value[3]) #运行check函数,并导入输入框的内容
if s==100:
sg.popup('您的分数为100,恭喜您是White_mu的真粉丝,可以领个粉丝牌了') #弹出窗口
else:
sg.popup('您的分数为', s,'还是/remake吧')

运行此程序:

输入正确答案:

输入错误答案:

程序运行非常成功,现在我们要将此程序打包成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-