3

我正在尝试对一些 Tkinter 代码进行单元测试。我希望我的测试断言我的小部件的回调设置正确。是否有可能获取绑定 Tkinter 小部件的 Python 函数?

我希望能够写出这样的东西:

def f():
    pass
b = ttk.Button(command=f)

assert b.command is f
4

1 回答 1

-2

print将命令放入函数中然后按下按钮查看会发生什么会是一个更好的主意。如果您不希望代码执行,您可以注释掉所有其他代码。

def func1():
    doStuff()
    print ("Function 1 has been called")

def func2():
    #doStuff2()
    print ("Function 2 has been called")

def func3():
    print ("Function 3 has been called")

button = Button(root, text="Call funaction 2", command=func2) #Etc....

编辑:我不确定这是否是个好主意,但您可以尝试使用_tclCommands按钮中的变量,该变量将返回一个列表。清单上有什么?老实说,我不完全确定,但请从我尝试中检查一下:

>>> from tkinter import *
>>> root = Tk()
>>> def epic():
...     print ("EPIC")
...
>>> b = Button(root, command=epic)
>>> b.grid()
>>> b._tclCommands
['28020208epic']
>>> epic
<function epic at 0x013D1468>
>>>
于 2013-09-08T23:16:02.660 回答