sg.如何使用PySimpleGUI调试器窗口

news/2025/9/27 22:27:52/文章来源:https://www.cnblogs.com/nxhujiee/p/19115812

PySimpleGUI调试器窗口是开发者在代码运行时实时监控变量、执行交互式命令的强大工具,其使用方法及核心功能如下:

一、核心使用步骤

  1. 启用异步窗口模式
    调试器依赖异步窗口(非阻塞读取)工作,需在read()方法中设置timeout参数(单位:毫秒)。例如:

    import PySimpleGUI as sg
    window = sg.Window('Debugger Demo', [[sg.Text('Debugger'), sg.Input(), sg.Button('Push Me')]])
    while True:event, values = window.read(timeout=500)  # 每500ms检查一次事件if event == sg.TIMEOUT_KEY:continue  # 忽略超时事件if event == sg.WIN_CLOSED:breakprint(event, values)
    window.close()
    

    若未设置timeout,调试器可能无法正常获取程序状态。

  2. 启动调试器窗口
    在代码中任意位置调用show_debugger_window()函数,并指定窗口位置(可选):

    sg.show_debugger_window(location=(10, 10))  # 窗口出现在屏幕(10,10)坐标处
    

二、调试器窗口功能

  1. 变量监控(Variables Tab)

    • 自动观察列表:显示当前作用域内的局部变量,可勾选需跟踪的变量。
    • 实时更新:变量值随程序执行动态刷新,适合排查间歇性错误。
  2. 交互式控制台(REPL Tab)

    • 提供Python交互式环境,可直接执行命令(如修改变量、调用函数)。
    • 示例:在REPL中输入values['input'] = 'new_value'可动态修改输入框内容。
  3. 弹出式调试窗口(Popout Window)

    • 快捷键触发:按键盘BREAK键(部分键盘标记为Pause)打开。
    • 非交互式快照:显示当前变量状态,但无法修改值。
    • 手动调用:通过show_debugger_popout_window(location=(x,y))指定位置打开。

三、高级调试技巧

  1. 调试输出重定向
    使用sg.Print()替代print(),输出内容会显示在调试窗口中:

    sg.Print('Debug message')  # 输出到调试窗口
    # 或重定向标准输出
    print = sg.Print
    print('All prints go to debugger')
    
  2. 动态修改代码逻辑
    在REPL中直接修改变量或调用函数,无需重启程序。例如:

    # 假设程序中有全局变量 `counter`
    counter = 0
    # 在REPL中输入:
    counter = 10  # 立即生效
    
  3. 调试窗口位置控制

    • 主调试器窗口默认出现在屏幕右上角,可通过location参数调整。
    • 弹出窗口位置灵活,适合多屏环境。

四、常见问题解决

  1. 调试器窗口不更新

    • 检查read()是否设置了timeout,且值合理(如200-500ms)。
    • 避免阻塞操作(如长时间循环),确保事件循环能定期触发。
  2. 变量未显示

    • 确保变量在调用show_debugger_window()时已定义。
    • 弹出窗口仅显示调用时的变量快照,后续新增变量不会自动加入。
  3. 性能影响

    • 调试器通过窃取异步调用时间片工作,对主程序性能影响极小。
    • 若发现卡顿,可增大timeout值(如从200ms调至1000ms)。

五、代码示例整合

import PySimpleGUI as sg# 设置主题(可选)
sg.theme('LightGray1')# 布局
layout = [[sg.Text('Enter text:'), sg.Input(key='-INPUT-')],[sg.Button('Submit'), sg.Button('Exit')],[sg.Text('Output:', key='-OUTPUT-')]
]# 创建窗口
window = sg.Window('Debugger Demo', layout)# 启动调试器(位置可选)
sg.show_debugger_window(location=(500, 100))# 事件循环
while True:event, values = window.read(timeout=200)  # 异步读取if event == sg.WIN_CLOSED or event == 'Exit':breakif event == 'Submit':window['-OUTPUT-'].update(f'You entered: {values["-INPUT-"]}')sg.Print(f'Submitted value: {values["-INPUT-"]}')  # 输出到调试窗口window.close()

操作流程

  1. 运行程序,调试窗口自动弹出。
  2. 在主窗口输入文本并点击“Submit”,观察调试窗口中的输出。
  3. 在调试器的REPL中输入values['-INPUT-']查看输入值,或直接修改变量。
  4. BREAK键打开弹出窗口,快速检查当前变量状态。

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

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

相关文章

对话汇总:从东方哲学到可计算架构的演进

对话汇总:从东方哲学到可计算架构的演进 声明:Ai辅助创作/岐金兰,技术门外汉 一、 起源:对AI伦理困境的哲学批判与东方方案的提出 对话始于一份名为《空白金兰契:一种应对AI伦理价值困境的东方方案及其批判性审视…

遵义网站建设网帮你网站备案证书查询

转载公众号 | DataFunTalk 合作分享:Jesus Barrasa-Neo4j-欧洲区售前和技术总监合作分享:丁可-Neo4j-亚太区高级技术顾问编辑整理:吴祺尧-加州大学圣地亚哥分校出品平台:DataFunTalk导读:Neo4j近年来与众多公司合作&am…

25.9.27 继续MyBatis

逐渐入门第一个框架,学习应用层面的东西比之前纯理论的知识有趣不少,实际内容比想象中多,争取先吃透掌握熟练吧。

MoeCTF 2025 二进制漏洞审计:boomboom_revenge

前情提要 栈溢出漏洞,简单的校验逻辑,但很容易被唬住,需要一点耐心。 题目分析 你可以轻易爆破我们的系统,但是一个不可泄露的“canary”你又该如何应对? 你可能需要使用 Python ctypes 包来直接调用 C 库函数。 …

跟brocode用c语言做tictoktoe井字棋 - 指南

跟brocode用c语言做tictoktoe井字棋 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

集训总结(九)

9.24~9.26总结9.24 P11770 檐牙覆雪 暴力很好写,直接枚举即可。单次询问复杂度 \(O(nlogn)\)。打个表,发现每个地方的最大雪堆都是由它的最大质因子位置转移而来. 设 \(f_i\) 表示最后 \(i\) 处最大雪团体积,则有转…

Spring Cloud构建分布式微服务架构的完整指南 - 指南

Spring Cloud构建分布式微服务架构的完整指南 - 指南2025-09-27 22:21 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; dis…

.net网站开发全过程网站域名做301

目录 初始化列表 static成员 C11对于非静态成员变量初始化 友元 友元函数 友元类 总结 初始化列表 我们知道,在学习构造函数时,我们知道对象的成员变量的初始化我们是在构造函数函数体内进行初始化的,还有没有其它初始化成员变量的方…

完整教程:操作系统之初识Linux

完整教程:操作系统之初识Linuxpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

XJSOJ优化(Stylus脚本)

/* XJSOJ Ultimate Smart Theme - 全面优化与重构 / / 版本: 3.0 - 完整结合版 / / 功能:包含基础圆润优化 + Smart Luogu式深度重构 */ /* === 基础重置与全局样式 === */{ border-radius: 8px !important; transiti…

使用mpm-itk让Apache以不同用户身份运行的完整指南

本文详细介绍了如何使用Apache的mpm-itk模块实现每个虚拟主机以不同用户身份运行,解决WordPress开发和生产环境中的文件权限问题,包含Docker容器配置和PHP邮件功能故障排除方案。使用mpm-itk让Apache以不同用户身份运…

sg.如何打开PySimpleGUI调试器窗口?

在PySimpleGUI中,调试器窗口的打开方式主要有以下三种,每种方式均适用于不同调试场景,且均通过内置调试器实现: 方法一:使用show_debugger_window()函数适用场景:需要快速查看变量值或交互式执行代码时。 操作步…

第6篇、Flask 表单处理与用户认证完全指南:从零到实战

标签:Python Flask Web开发 表单验证 Session Cookie 用户认证 安全编程🎯 为什么选择这篇文章? 在Web开发的世界里,表单处理和用户认证是每个开发者必须掌握的核心技能。无论是构建电商网站、社交平台还是企业管…

做视频网站收费标准wordpress.org密码

近日,全球IT市场研究和咨询公司Gartner发布最新报告《Magic Quadrant™ for Cloud Database Management Systems》(全球云数据库管理系统魔力象限)。全自研分布式数据库 OceanBase 入选“荣誉提及”,2022 年推出的云数据库 OB Clo…

腾讯开源 AudioStory!能生成 150 秒故事长音频,还会剧情拆解 + 自动配乐 - 详解

腾讯开源 AudioStory!能生成 150 秒故事长音频,还会剧情拆解 + 自动配乐 - 详解2025-09-27 22:09 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overf…

First blog of HannesZ

First blog of HannesZ这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546这个作…

威联通 NAS Docker 容器更新详解:从备份、推送到重建的全流程指南

本文针对在威联通(QNAP)等 NAS 平台上,因网络限制导致从 Docker Hub 更新容器困难或速度缓慢的问题,提出了一套完整且高效的解决方案。文章以更新 Sun-Panel 导航面板为例,详细阐述了如何利用 PC 作为跳板,结合 …

parameter和defparam的简单用法

parameter和defparam的用法 1.parameter (1)“C语言中的宏定义”功能 对于parameter来说,在我们的verilog语言中,在写.v的文件中,对于同一个变量多次出现,每次都是同时改变这些变量,可以使用parameter来替换变量…

9.27学习笔记

今日速览 环境拓扑(安全开启后) 表格 节点 新增角色 Principal 样例 node1 KDC (kerberos) kadmin/admin@HADOOP.COM node2 YARN RM + Queue Mgmt yarn/node2@HADOOP.COM node3 Phoenix RS hbase/node3@HADOOP.COM 关…

什么网站做兼职最好平台经济是什么意思

首先,我的结论是,如果是对对象进行 操作的话,传的是地址,如果是对基本数据类型进行操作的话,传的是值!下面,我再用一个小的实例来测试我的结论:class Person {int age;public void setAge(int a…