如何添加计时器wx.应用程序更新窗口对象的主循环?

2024-09-30 16:36:02 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以在MainLoop中放置一个计时器或一个钩子,以便每隔1秒在某些wx窗口中调用一些方法?

我可以把计时器放在wx.框架对象,但我想在这些对象外面放一个定时器。有办法吗?

如果我启动一个线程并尝试这样做,我会得到:

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()

^{pr2}$

屏幕上什么也没画出来。

更新:为了澄清,在Python中,计时器是一个线程,所以我将使用更适合该任务的东西(计时器或线程)。我想每隔N秒更新N个窗口对象。

wxwidgets有自己的计时器,但它们应该绑定到Window对象,所以我需要Nwx.小工具N个窗口对象的计时器,这不是我想要的。


Tags: 对象方法self框架线程thread钩子计时器
1条回答
网友
1楼 · 发布于 2024-09-30 16:36:02

避免使用计时器和创建自己的线程的简单解决方案是使用wx.CallLater

def poll(self):
   do_something()
   # waits 1 seconds before calling again
   wx.CallLater(1000, self.poll)

相关问题 更多 >