Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在wx.App MainLoop中添加更新窗口对象的计时器?_Python_Python 2.7_Wxpython_Wxwidgets_Python Multithreading - Fatal编程技术网

Python 如何在wx.App MainLoop中添加更新窗口对象的计时器?

Python 如何在wx.App MainLoop中添加更新窗口对象的计时器?,python,python-2.7,wxpython,wxwidgets,python-multithreading,Python,Python 2.7,Wxpython,Wxwidgets,Python Multithreading,有没有办法将计时器或挂钩放入MainLoop中,以便每1秒在某些wx窗口中调用一些方法 我可以在wx.Frame对象内放置计时器,但我想在这些对象外放置计时器。有没有办法做到这一点 如果我启动一个线程并尝试这样做,我会得到: self.updateThread = Thread(target = updateWindows, args=[self]) self.updateThread.start() app.MainLoop() Pango:ERROR:/build/pan

有没有办法将计时器或挂钩放入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()

屏幕上没有画任何东西

更新:澄清一下,在Python中,计时器是一个线程,所以我将使用对任务更好的方法(计时器或线程)。我想每N秒更新N个窗口对象


wx窗口小部件有自己的计时器,但它们应该绑定到窗口对象,所以我需要N个wx.widgets计时器用于N个窗口对象,这不是我想要的。

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

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

你为什么需要一根线?你能不用它吗?你问的问题真的不清楚:你想用定时器还是线程,或者两者都用?你对计时器有什么确切的问题(提示:它们不在任何东西的内部或外部)?我会更新描述。基本上我想每X秒更新一次windows。计时器在Python中是一个线程,所以对于这个任务来说什么更好对我来说都是有用的。
def poll(self):
   do_something()
   # waits 1 seconds before calling again
   wx.CallLater(1000, self.poll)