Skip to main content
 首页 » 编程设计

python之Tkinter之询问一个小部件的回调

2025年05月04日6kerrycode

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

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

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

请您参考如下方法:

最好在函数中放置一个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> 
>>>