当前位置: 首页 > news >正文

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

在PySimpleGUI中,调试器窗口的打开方式主要有以下三种,每种方式均适用于不同调试场景,且均通过内置调试器实现:

方法一:使用show_debugger_window()函数

  • 适用场景:需要快速查看变量值或交互式执行代码时。
  • 操作步骤
    1. 在代码中任意位置调用sg.show_debugger_window(location=(x, y)),其中(x, y)为窗口在屏幕上的坐标(如(10, 10))。
    2. 确保read()函数包含超时参数(如window.read(timeout=500)),使调试器能通过异步调用获取周期。
  • 窗口功能
    • Variables选项卡:显示自动观察的变量列表,可手动添加需监控的变量。
    • REPL选项卡:提供Python交互式控制台,支持在程序环境中执行代码并检查变量值。
  • 示例代码
    import PySimpleGUI as sg
    sg.show_debugger_window(location=(10, 10))
    layout = [[sg.Text('Debugger Demo'), sg.Input('Input here'), sg.Button('Push Me')]]
    window = sg.Window('Debugger Demo', layout)
    while True:event, values = window.read(timeout=500)if event == sg.TIMEOUT_KEY:continueif event == sg.WIN_CLOSED:breakprint(event, values)
    window.close()
    

方法二:通过快捷键打开

  • 适用场景:调试时需快速唤出调试器,避免修改代码。
  • 操作步骤
    1. 在程序运行时,按下键盘上的BREAK键(部分键盘可能标记为CancelPause)。
    2. 调试器窗口将出现在屏幕右上角,显示当前局部变量快照。
  • 注意事项
    • 快捷键触发的调试器窗口仅显示创建时存在的变量,后续新增变量不会自动显示。
    • 窗口大小固定,无法动态扩展。

方法三:在布局中添加调试按钮

  • 适用场景:需要固定调试入口,或希望调试器与主界面风格一致。
  • 操作步骤
    1. 在窗口布局中添加sg.Debug()按钮,按钮将显示PySimpleGUI徽标(紫色和黄色)。
    2. 点击按钮后,调试器窗口将弹出,功能与show_debugger_window()一致。
  • 示例代码
    import PySimpleGUI as sg
    layout = [[sg.Text('Main Window')], [sg.Debug()], [sg.Button('Exit')]]
    window = sg.Window('Main Window', layout)
    while True:event, values = window.read()if event == sg.WIN_CLOSED or event == 'Exit':break
    window.close()
    

调试器使用核心要点

  1. 异步读取必要性:若窗口使用阻塞式read()(无超时参数),需修改为非阻塞模式(如read(timeout=200)),否则调试器无法获取执行周期。
  2. 超时值调整:默认超时值(如200ms)可能影响性能,可根据需求调整(如500ms或1000ms)。
  3. 变量监控:在Variables选项卡中,可手动添加需监控的变量,调试器将实时显示其值。
  4. REPL交互:通过REPL选项卡,可直接执行Python代码(如修改变量值、调用函数),支持实时调试。
http://www.zskr.cn/news/13169.html

相关文章:

  • 腾讯开源 AudioStory!能生成 150 秒故事长音频,还会剧情拆解 + 自动配乐 - 详解
  • 9.27学习笔记
  • 开学日记
  • 论文解读-《Less is More on the Over-Globalizing Problem in Graph Transformers》 - zhang
  • day19_添加 修改
  • 2025 贵阳门窗店优选:丽格门窗,用 20 年匠心适配高原宜居需求
  • “鹏云杯”第十二届山东省大学生网络安全技能大赛 -- Crypto -- WriteUp
  • 9/27
  • 2025GUI工程实践:Unity编辑模式下GUI运行
  • 哦好多天没写了水一下吧
  • 如何在不绑定Apple账号的情况下备份florr.io
  • 7.WPF 的 TextBox 和 TextBlock 控件 - 实践
  • 深入解析:深入理解 Docker:从入门到实践
  • ⸢ 陆 ⸥ ⤳ 可信纵深防御:整体架构 - 实践
  • 安装 HuggingFace datasets 模块、包、库
  • 详细介绍:【序列晋升】45 Spring Data Elasticsearch 实战:3 个核心方案破解索引管理与复杂查询痛点,告别低效开发
  • 博客写作者该何去何从
  • JSON dump in Ruby
  • 详细介绍:python+django/flask+uniapp基于微信小程序的瑜伽体验课预约系统
  • GraphRAG对自然语言处理中深层语义分析的革命性影响与未来启示 - 教程
  • 详细介绍:云原生 vs 传统部署
  • 记录 | 关于陪伴型交互AI的一些探讨
  • luogu P1719 最大加权矩形
  • Laravel5.8 利用 snappyPDF 生成PDF文件
  • 数据结构——链表 - 详解
  • 25秋周总结4
  • 饥荒联机版
  • LinuxC++项目开发日志——基于正倒排索引的boost搜索引擎(5——通过cpp-httplib库建立网页模块) - 详解
  • 微信二次开发文档
  • 【底层机制】Android标准C库为什么选择 bionic 而不是 musl【一】 - 详解