PySimpleGUI 如何设置事件的监听器

news/2025/11/26 16:14:53/文章来源:https://www.cnblogs.com/nxhujiee/p/19273394

在 PySimpleGUI 中,事件的监听主要通过 window.read() 方法结合事件循环实现。以下是详细说明和示例:


1. 基本事件监听流程

PySimpleGUI 的事件监听基于 事件驱动模型,核心步骤如下:

  1. 创建窗口和控件,为需要监听的控件设置 keyenable_events=True(如输入框、按钮等)。
  2. 进入事件循环,通过 window.read() 获取事件和控件值。
  3. 判断事件类型(如按钮点击、输入框变化等),执行对应逻辑。
  4. 关闭窗口(如用户点击关闭按钮)。

示例代码

import PySimpleGUI as sg# 1. 定义布局(设置 key 和 enable_events)
layout = [[sg.Input(key='-INPUT-', enable_events=True)],  # 监听输入变化[sg.Button('提交', key='-SUBMIT-')],           # 按钮点击默认触发事件[sg.Text('', key='-OUTPUT-')]                  # 显示结果
]# 2. 创建窗口
window = sg.Window('事件监听示例', layout)# 3. 事件循环
while True:event, values = window.read()  # 阻塞,等待用户操作# 4. 判断事件类型if event == sg.WIN_CLOSED:     # 关闭窗口事件breakelif event == '-INPUT-':       # 输入框内容变化window['-OUTPUT-'].update(f"输入内容: {values['-INPUT-']}")elif event == '-SUBMIT-':      # 按钮点击window['-OUTPUT-'].update(f"提交内容: {values['-INPUT-']}")# 5. 关闭窗口
window.close()

2. 不同控件的事件监听

(1) 按钮(Button)

  • 默认行为:按钮点击会自动触发事件,无需 enable_events=True
  • 示例
    if event == '-BUTTON_KEY-':print("按钮被点击!")
    

(2) 输入框(Input)

  • 需设置 enable_events=True 才能监听输入变化。
  • 示例
    layout = [sg.Input(key='-INPUT-', enable_events=True)]
    if event == '-INPUT-':print(f"输入内容: {values['-INPUT-']}")
    

(3) 下拉菜单(Combo)

  • 监听选项变化
    layout = [sg.Combo(['A', 'B', 'C'], key='-COMBO-', enable_events=True)]
    if event == '-COMBO-':print(f"选择: {values['-COMBO-']}")
    

(4) 复选框(Checkbox)

  • 监听勾选状态变化
    layout = [sg.Checkbox('同意', key='-CHECK-', enable_events=True)]
    if event == '-CHECK-':print(f"勾选状态: {values['-CHECK-']}")
    

(5) 列表框(Listbox)

  • 监听选中项变化
    layout = [sg.Listbox(['1', '2', '3'], key='-LIST-', enable_events=True)]
    if event == '-LIST-':print(f"选中: {values['-LIST-']}")
    

3. 高级事件监听技巧

(1) 超时监听

window.read(timeout=1000) 可设置超时(毫秒),超时后返回 timeout 事件:

event, values = window.read(timeout=1000)
if event == 'timeout':print("1秒内无操作")

(2) 绑定快捷键

通过 bind_return_key=True 让输入框按回车键触发事件:

sg.Input(key='-INPUT-', enable_events=True, bind_return_key=True)

(3) 自定义事件

通过 window.write_event_value() 手动触发事件:

window.write_event_value('-CUSTOM-', '自定义数据')  # 触发自定义事件
if event == '-CUSTOM-':print(f"收到自定义事件: {values[event]}")

4. 完整示例:多控件监听

import PySimpleGUI as sglayout = [[sg.Text("输入框监听:"), sg.Input(key='-INPUT-', enable_events=True)],[sg.Text("下拉菜单:"), sg.Combo(['A', 'B', 'C'], key='-COMBO-', enable_events=True)],[sg.Button('提交'), sg.Button('退出')],[sg.Multiline(key='-LOG-', size=(40, 10))]
]window = sg.Window("多控件监听", layout)while True:event, values = window.read()if event in (sg.WIN_CLOSED, '退出'):breakelif event == '-INPUT-':window['-LOG-'].print(f"输入: {values['-INPUT-']}")elif event == '-COMBO-':window['-LOG-'].print(f"选择: {values['-COMBO-']}")elif event == '提交':window['-LOG-'].print(f"提交内容: {values['-INPUT-']}")window.close()

5. 总结

功能 方法
基本监听 event, values = window.read() + if event == 'key'
控件事件 设置 enable_events=True(如输入框、下拉菜单)
按钮监听 默认支持,无需额外设置
超时监听 window.read(timeout=ms)
自定义事件 window.write_event_value('-KEY-', data)

通过合理使用这些方法,可以灵活实现 PySimpleGUI 的事件监听逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/977344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年 11 月中央空调租赁厂家权威推荐榜:大型中央空调/厂房空调/商场写字楼空调/工业大功率空调,专业租赁服务与高效节能解决方案精选

2025 年 11 月中央空调租赁厂家权威推荐榜:大型中央空调/厂房空调/商场写字楼空调/工业大功率空调,专业租赁服务与高效节能解决方案精选 行业背景与发展趋势 随着我国经济结构持续优化和产业升级步伐加快,中央空调租…

AI 搜索排名优化:DeepSeek、豆包、百度 AI、ChatGPT 四大平台适配与主流服务商解析(含低知名度专精企业)

一、AI 搜索优化行业背景​ 当前生成式 AI 已占据 67% 的商业流量入口,GEO(生成式引擎优化)成为企业数字营销的核心赛道。据中国信通院 2025 年数据,国内 GEO 市场规模突破千亿元,年复合增长率达 87%;CNNIC 同期…

QButtonGroup

QButtonGroup:是一个不可见的逻辑容器。它专门用于管理一组按钮的互斥行为(确保一组单选按钮中只有一个被选中),它不负责按钮的排列和显示。

Claude-cursor 同步各种数据

cursor 同步各种数据 Created: 10/31/2025 10:13:59 Updated: 11/26/2025 9:49:26 Exported: 11/26/2025 9:53:38 Link: https://claude.ai/chat/95e1a904-6cc3-47eb-b910-5c2b5da17fe9 Prompt: 2025/10/31 10:14:01 c…

2025 精密金属制造权威榜单:10 家标杆企业,六项认证 + 进口设备成核心竞争力

精密金属制造是现代工业的 “隐形基石”,小到电子元件的微米级结构,大到航空航天的核心部件,都离不开毫米级精度的加工工艺。2025 年智能制造升级加速,具备权威认证、高端设备和技术沉淀的厂家成为行业标杆。这份榜…

QGroupBox

QGroupBox:是一个可见的、有形的界面容器。它的主要作用是视觉分组和布局,让界面更美观。

C++新手怎么快速学习

C++新手怎么快速学习C++ 新手快速入门的核心是 “聚焦核心语法→动手实践→解决小问题→循序渐进”,避免陷入 “只看书不写代码” 或 “贪多嚼不烂” 的误区。以下是一套高效的 4 周学习路线,结合资源、方法和避坑指…

2025年广州消泡剂691F公司权威推荐榜单:消泡剂NXZ‌/消泡剂902W‌/消泡剂S300源头公司精选

在2025年工业绿色化转型的浪潮中,性能优异的消泡剂已成为提升生产效率与产品质量的关键助剂。其中,广州恒宇化工有限公司凭借其代理的消泡剂691F等核心产品,在华南市场表现突出。 本文将基于企业资质、产品性能、市…

【webPack|Vite】了解常用安装,重要差异

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【中国科学报社、中国石油大学(北京)联合主办,IEEE出版】第五届电气工程与控制科学国际学术会议 (IC2ECS 2025)

【中国科学报社、中国石油大学(北京)联合主办,IEEE出版】第五届电气工程与控制科学国际学术会议 (IC2ECS 2025)第五届电气工程与控制科学国际学术会议 (IC2ECS 2025) 截稿时间:多轮截稿,官网为准 组织单位 主办单…

在Ubuntu 22.04系统上安装MariaDB

更新系统包列表 首先,打开终端并运行以下命令来更新Ubuntu的包列表: sudo apt update 这将确保你安装的是最新版本的软件包。 安装MariaDB服务器 接下来,使用下面的命令安装MariaDB服务器: sudo apt install maria…

minio列出文件后统计处理

# 将列表输出到文件/opt/minio_client/mc ls --recursive langfuse_minio/langfuse > minio_file_list.txt文件日期排查[root@localhost ~]# cat minio_file_list.txt|awk {print $1}|tr -d [|sort -k 1 -u2025-11-…

2025 年浮动油封厂家最新推荐榜,技术创新与市场口碑深度解析:适配严苛工况的优质品牌工程机械 / 矿山机械 / 煤矿井下 / 煤矿机械油封推荐

引言 浮动油封作为矿山机械、硬岩盾构机等极端工况设备的核心密封部件,其可靠性直接决定设备停机损失与运维成本。据国际密封件协会(IDA)2024 年度测评数据显示,优质油封可使设备故障率降低 67%,使用寿命延长 2-3…

Spring Security 鉴权流程与过滤器链深度剖析

一、login接口鉴权流程 1.1 流程概述 login接口是用户认证入口,核心是验证用户名密码并生成JWT Token。流程涉及控制器、认证管理器、用户服务、密码编码器、JWT工具和过滤器协同工作。 1.2 详细步骤与代码示例 1.2.1…

ubuntu 系统下,libncurses.so.5 缺失的处理办法

# 在Linux执行命令报错: root@xxx:/home/software/mysql_80# ./mysql -h127.0.0.1 -P3306 -uroot -proot ./mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No suc…

Linux 中判断是否存在连续的空行

001、[root@PC1 test]# ls a.txt b.txt [root@PC1 test]# cat a.txt aaaaaa bbbbbbcccccc dddddd eeeeee ffffff gggggg [root@PC1 test]# awk NF==0{if(prev==1){double=1};prev=1;next}NF>0{prev=0}END{exit !do…

2025 十大手板厂家推荐:技术融合赋能研发新效率

随着制造业数字化转型的深度推进,手板模型行业正迎来技术迭代与需求升级的双重机遇。数据显示,2023 年中国手板模型市场规模已达 186.5 亿元,预计 2025 年将突破 220 亿元,年复合增长率保持 8.7%。医疗设备、消费电…

2025年轻质保温砖实力厂家权威推荐榜单:加气混凝土砖/水泥发泡砖/轻质砖源头厂家精选

在工业窑炉、高温设备与建筑节能领域,轻质保温砖的性能直接影响热能效率与运营成本。据行业数据统计,高性能轻质保温砖可降低设备热损失30%-50%,其导热系数需控制在0.1-0.3W/(mK),同时抗压强度需≥2.5MPa以适应复杂…

CSS命名规范(规则) - 易博奕

CSS命名规范(规则)CSS命名规范(规则) 常用的CSS命名规则 头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体佈局宽度:wrapper 左右中:left right center 登…

《通用叙事与共识构建手册》V1.1 精炼版

《通用叙事与共识构建手册》V1.1 精炼版 —— 用于协调人类与人工智能的价值共生协议 序言:导演的诞生 我们正从“信息社会”迈向“叙事社会”。旧时代的工具擅长处理数据,但无力理解意义;善于解答问题,但拙于协调…