我要对我的tkitner GUI进行单元测试。
因此我尝试从单独的线程生成点击事件。 以下是测试Tkinter.Button的示例:
import unittest, threading
from Tkinter import *
class clickThread(threading.Thread):
def __init__(self, root):
threading.Thread.__init__(self)
self.root = root
def run(self):
button = filter(lambda a: isinstance(a, Button), self.root.children.values())[0]
print button
button.focus()
button.event_generate("<Button-1>")
button.event_generate("<ButtonRelease-1>")
print "clicked"
class Test(unittest.TestCase):
def testName(self):
root = Tk()
button = Button(root, command=self.returnEvent)
button.pack()
thread = clickThread(root)
thread.start()
root.mainloop()
def returnEvent(self):
print "!"
我生成的click事件不会调用Test.returnEvent方法。但如果我真的点击它,它会按预期工作。
答案 0 :(得分:2)
如果我没记错的话(自从我尝试了这么多年以来,我可能不会这样做),光标需要通过按钮才能触发绑定。
你知道按钮的“调用”方法吗?您可以使用它来模拟按下按钮。