如何调用 tkinterevent
来自一个单独的对象?
我正在寻找类似 wxWidgets 的东西wx.CallAfter
。例如,如果我创建一个对象,并将我的对象传递给它Tk
root 实例,然后尝试从我的对象调用该根窗口的方法,我的应用程序锁定。
我能想到的最好的办法就是使用after
方法并检查我单独对象的状态,但这似乎很浪费。
要回答“如何从单独的对象调用 TkInter 事件”的具体问题,请使用event_generate
命令。它允许您将事件注入到根窗口的事件队列中。与 Tk 强大的虚拟事件机制相结合,它成为一种方便的消息传递机制。
例如:
from tkinter import *
def doFoo(*args):
print("Hello, world")
root = Tk()
root.bind("<<Foo>>", doFoo)
# some time later, inject the "<<Foo>>" virtual event at the
# tail of the event queue
root.event_generate("<<Foo>>", when="tail")
请注意,event_generate
呼叫将立即返回。目前尚不清楚这是否是您想要的。一般来说,您不希望基于事件的程序阻塞等待对特定事件的响应,因为它会冻结图形用户界面.
我不确定这是否能解决您的问题;如果没有看到您的代码,我不确定您真正的问题是什么。例如,我可以在传递根的对象的构造函数中访问根的方法,而无需锁定应用程序。这告诉我您的代码中还发生了其他事情。
下面是从其他对象成功访问根窗口上的方法的示例:
from tkinter import *
class myClass:
def __init__(self, root):
print("root background is %s" % root.cget("background"))
root = Tk()
newObj = myClass(root)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)