Spyder IDE中如何调试Qt GUI点击按钮后才触发的函数?
Spyder 5.1调试Qt UI触发函数的操作方法
方法1:断点调试(最常用)
- 打开你的代码文件,在
func1、func2内部你需要检查变量的代码行左侧点击,打上红色断点(不要打在空行、注释或函数定义行上)。 - 点击Spyder顶部工具栏的调试文件按钮(带小虫标识的运行键),或按快捷键F5启动调试,程序会正常运行并弹出UI窗口。
- 正常点击按钮、选择需要的Excel文件,当代码执行到你打了断点的位置时,调试器会自动暂停。此时你可以在Spyder右上角的*变量资源管理器(Variable Explorer)*查看所有变量的当前值,也可以在调试控制台输入指令查询变量,后续使用常规调试快捷键操作即可:
- F10:单步执行当前行,不进入子函数
- F11:单步执行当前行,进入子函数内部
- F12:跳出当前所在函数
- Ctrl+F12:继续运行到下一个断点
原理说明:你之前误以为调试器跑完了所有代码,实际是
sys.exit(app.exec_())启动了Qt的事件循环,程序会一直停在这个循环里等待用户交互操作,只是没有执行到你的业务函数代码,触发按钮点击后代码走到断点位置自然会被调试器捕获。
方法2:手动插调试桩
如果不习惯用图形化断点,可以直接在需要暂停的代码位置插入调试指令:
- 临时打印:在
func1/func2内部加print(你要查看的变量名),启动运行后,变量值会输出到Spyder的控制台,调试完成后删掉打印语句即可。 - 插断点桩:在需要暂停的位置加
import pdb; pdb.set_trace(),运行到这一行时会自动进入pdb交互调试模式,可以直接输入变量名查看值,输入n单步走、c继续运行。
方法3:抽取函数单独调试(效率更高)
你当前的func1、func2是嵌套在button1里的,可以先把这两个函数抽成全局独立函数,单独写一段测试代码直接传入本地Excel路径调用:
def func1(input): # 原有逻辑 return def func2(input): # 原有逻辑 return # 测试代码,不用启动UI if __name__ == "__main__": test_path = r"C:\你的测试文件路径\test.xlsx" func1(test_path) func2(test_path)
直接调试这段测试代码即可,不用每次都点击UI选文件,调试通了再把函数放回原有逻辑即可。
内容的提问来源于stack exchange,提问作者Gingerhaze
相关产品推荐
相关产品推荐

