吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1475|回复: 8
收起左侧

[讨论] PySimpleGUI使用指北

[复制链接]
kkkkkkkkn 发表于 2023-9-12 20:03

如你所见,这是一个python库,可以用它创建能运行的窗口应用,用专业的术语来说 PySimpleGUI 是一个基于 tkinter 的 Python GUI 库,可以使用 PySimpleGUI 创建各种类型的窗口和交互式应用程序
接下来开始教程,首先打开我们的pycharm(在这之前要创建一个项目),在py文件中输入

import PySimpleGUI

如果PySimpleGUI这段字底下出现红波浪线,悬停在这段字上面,会出现蓝色字体Install package PySimpleGUI,点击并等待安装成功,成功后红色波浪线会消失(没有红色波浪线就是已经安装了).


因为咱这个库的功能是创建各种类型的窗口和交互式应用程序,所以该有的程序咱一个都不能少

首先构思咱的代码构成

1.首先咱要导入模块,也就是项目所需的库,大部分情况下都不止用一个库.

2.其次要构思文字,图片,按钮等的布局,画个图是最好不过.

3.然后就该创建窗体,相当于画布,没画布怎么画画.

4.创建事件循环
事件循环通常用于接收和处理用户的输入事件,例如点击按钮、输入文本等。事件循环的基本原理是通过不断地监听事件发生并触发相应的回调函数来实现。事件其实就是人对电脑的动作,比如点击按钮,输入文字等,然后程序根据这些事件来判断执行程序的哪一部分
chatgpt说事件循环的优势在于它可以实现非阻塞的异步操作。通过设置合适的超时时间,您可以平衡程序的响应速度和资源消耗。同时,通过事件循环机制,您可以实现交互式的用户界面,响应用户的输入,并做出相应的动作。

5.关闭窗口
如果不关闭窗口,程序会一直运行,用户无法退出程序。

其次做代码实现(信息输入界面)

正文正式开始

# 导入模块
import PySimpleGUI as sg

这里sg就相当于PySimpleGUI的小名,调用sg这个小名就相当于调用PySimpleGUI,方便调用

# 布局  
layout = [  
[sg.Text('测试', key='aa', enable_events=True)], # text文本  
[sg.Text('姓名', size=2), sg.InputText('hello')],  
[sg.Text('性别',text_color='red'), sg.InputText('男')],  
[sg.Text('国籍', background_color='blue', enable_events=True), sg.InputText('China')],  
[sg.Image(file='文件路径')]  
]

定义一个layout列表存储我的布局.
sg.text 是 PySimpleGUI 中用于创建文本显示的函数,点击它并不会有任何事件,所以咱可以添加enable_events=True使得点击字体成为一个事件,至于key='aa',会使点击测试字体的事件名称变为aa(文字内容过多时超好用),不然事件名称就是测试了.
as for size属性,text_color属性,background_color见名知意即可
sg.InputText 是 PySimpleGUI 提供的用于创建文本输入框(Input)的方法。它可以让用户输入文本,并将输入的文本作为返回值。
注意:传入图片只能是png和gif        size属性定义的是文本框的大小


# 创建窗口  
window = sg.Window('可视化测试', layout)

创建窗口代码很死,传入两个参数,第一个是窗口标题,layout是窗口布局


# 事件循环
while True:  
event, values = window.read()  
if event is None:  
break  
if event == 'aa':  
print('aa')  
if event == '国籍':  
print(99)

window.read() 是 PySimpleGUI 提供的用于启动事件循环的方法。在调用 window.read() 时,PySimpleGUI 将等待用户与窗口进行交互,并返回一个触发的事件和对应的值(两个值)

  • event 是触发的事件(例如按钮点击、菜单选择等),它是一个字符串。
  • values 是一个字典,包含了窗口中各个组件的当前值。

具体而言,window.read() 方法会阻塞程序的执行,直到发生某些用户事件。一旦事件被触发,例如用户点击了按钮或关闭了窗口,read() 方法就会立即返回,并将事件和对应的值封装在一个元组中返回给调用者。

第一个if判断是否点击窗口右上角的关闭按钮,点击则事件返回None此时执行break跳出循环结束程序

剩下两个if则是出现相应的事件时执行下面的print语句,常常用来纠错

如果用户关闭了窗口,event 的值将为 None,这时我们使用 break 语句来跳出循环,退出监听状态。

注意:为什么第一个ifis而不是==

在 Python 中,None 是一个唯一的对象。使用 is 操作符可以判断一个对象是否为 None,而不是其它具有类似行为的对象。如果使用 == 操作符,会执行值比较,这可能出意外。



成果在附件{:1_918:}


如有谬误,还请指正
{:1_919:}

成果

成果

免费评分

参与人数 3吾爱币 +2 热心值 +3 收起 理由
supercilious + 1 + 1 鼓励转贴优秀软件安全工具和文档!
青山绿水meng + 1 谢谢@Thanks!
hrh123 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

redfieldw 发表于 2023-9-12 23:08
这个能用CSS调整界面吗,还是只能用它预设的参数
hrh123 发表于 2023-9-13 00:22
redfieldw 发表于 2023-9-12 23:08
这个能用CSS调整界面吗,还是只能用它预设的参数

虽然我不太用这个库,但这是Python啊,和CSS有毛关系
zhanglei1371 发表于 2023-9-13 05:48
 楼主| kkkkkkkkn 发表于 2023-9-13 06:38
redfieldw 发表于 2023-9-12 23:08
这个能用CSS调整界面吗,还是只能用它预设的参数

不可以的哦
 楼主| kkkkkkkkn 发表于 2023-9-13 08:22
zhanglei1371 发表于 2023-9-13 05:48
gui和打包是py的短处,是c#的长处。

哥们你好强啥都懂啊
~零度 发表于 2023-9-13 09:56
可以考虑使用PyQT,这个功能全面,能做出很好看的界面
 楼主| kkkkkkkkn 发表于 2023-9-13 17:36
~零度 发表于 2023-9-13 09:56
可以考虑使用PyQT,这个功能全面,能做出很好看的界面

之前学过,确实比这个好用多了
kaohsing 发表于 2023-11-12 06:17
pysimplegui大家族还有qt版和web版
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 17:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表