我正在尝试对一些Tkinter代码进行单元测试。我希望我的测试断言我的小部件正确设置了它们的回调。是否可以获取Tkinter小部件绑定的Python函数?
我希望能够写出这样的东西:
def f():
pass
b = ttk.Button(command=f)
assert b.command is f
答案 0 :(得分:-1)
在函数中放置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>
>>>