调试GUI应用程序的最佳方法(特别是在Python中)?

时间:2012-12-02 06:15:00

标签: python debugging user-interface

所以我正在尝试调试这个没有编写GUI(Kivy in particular的源代码(在Python中),我试图弄清楚当时触发了什么代码/事件我点击了某些东西。我试着在我认为它会被触发的位置放入断点,我有时会发现我错了,并且似乎从来没有遇到过我想要的断点。

任何人都有任何关于GUI调试的建议,并弄清楚某些事件触发了什么,特别是在Python中?

2 个答案:

答案 0 :(得分:0)

如何将print语句放在打印函数名称的不同函数(或事件处理程序)中,然后是函数收到的参数?这应该很清楚当你使用GUI时会发生什么。我通常将print包装在我用于此详细输出的函数中,例如:

def verbose_print(message, *args):
    if VERBOSE:
        print message.format(*args)

现在,在我的各种函数中,我可以使用这样的函数:

def do_something(param1, param2):
    verbose_print('do_something({}, {})', param1, param2)

    # Do some stuff...

此外,您现在可以通过将模块全局常量VERBOSE设置为TrueFalse来打开和关闭详细输出,而不是删除所有打印语句。

答案 1 :(得分:0)

有一个著名的基于 CLI 的笑话程序,名为 xcowsay。它显示一个弹出窗口(一个 GUI 的)——一头带有消息的母牛的图片。你需要先在你的电脑上安装 xcowsay,它非常小。

不要使用 print 然后在终端中搜索消息,而是使用此 oneliner

# Example
import subprocess; subprocess.Popen(['xcowsay', 'your message here', '-t 1'])

# General syntax
import subprocess; subprocess.Popen(['xcowsay', string1, string2, string3 ..., '-t 1'])

# For printing objects, cast them to str first
# '-t 1' is for displaying the popup for one second, you can change it.

我为什么使用它:

  1. 简单而简短 - 一行
  2. 适用于大多数系统 - Linux、Mac 和 Windows
  3. 异步运行 - 不会干扰应用的执行
  4. 支持多行字符串
  5. Unicode 支持 - 表情符号可以使用

我在开始使用 Python 时发现了这个,但不知道 pdb 等。 事实上,这个程序可以GUIfy 你的整个 CLI。

Screenshot