有没有办法将定时器或挂钩放入MainLoop,每隔1秒调用一些wx窗口中的某些方法?
我可以将计时器放在wx.Frame对象中,但我想将一个计时器放在这些对象之外。有办法吗?
如果我开始一个线程并尝试这样做,我得到:
self.updateThread = Thread(target = updateWindows, args=[self])
self.updateThread.start()
app.MainLoop()
Pango:ERROR:/build/pango1.0-EzEh0I/pango1.0-1.38.1/./pango/pango-layout.c:3925:pango_layout_check_lines: assertion failed: (!layout->log_attrs)
Aborted (core dumped)
添加updateThread.join()
:
self.updateThread = Thread(target = updateWindows, args=[self])
self.updateThread.start()
self.updateThread.join()
app.MainLoop()
屏幕上没有任何内容。
更新:澄清一下,在Python中,一个Timer是一个线程,所以我将使用更好的任务(定时器或线程)。我想每N秒更新N个Window对象。
wx小部件有自己的定时器,但它们应绑定到Window对象,所以我需要N wx.widgets定时器用于N Window对象,而这不是我想要的。
答案 0 :(得分:1)
避免使用计时器和创建自己的线程的简单解决方案是使用wx.CallLater
def poll(self):
do_something()
# waits 1 seconds before calling again
wx.CallLater(1000, self.poll)