所以我创建了一个包含使用wxPython的GUI的类。 你是如何做到这一点的,以便每分钟刷新一次?
答案 0 :(得分:2)
对于间隔发生的事情,请使用Timer。来自WxPyWiki:
def on_timer(event):
pass # do whatever
TIMER_ID = 100 # pick a number
timer = wx.Timer(panel, TIMER_ID) # message will be sent to the panel
timer.Start(100) # x100 milliseconds
wx.EVT_TIMER(panel, TIMER_ID, on_timer) # call the on_timer function
出于某种原因,当我尝试它时,这段代码不起作用。原因是计时器必须是班级成员。如果您将该代码放入 init ()方法并添加self。在计时器之前,它应该工作。如果没有,请尝试使on_timer()成为类成员。 - PabloAntonio
当计时器正在运行时,我在关闭框架时遇到了问题。
以下是我处理它的方式:
def on_close(event):
timer.Stop()
frame.Destroy()
wx.EVT_CLOSE(frame, on_close)
答案 1 :(得分:0)
我不使用wxPython,但是如果有一个名为refresh
的方法或类似的东西,你可以每分钟启动一个调用该方法的线程。
from threading import Thread
from time import sleep
def refreshApp(app, timespan):
while app.isRunning:
app.refresh()
sleep(timespan)
refresher = Thread(target=worker, args=(myAppInstance, 60))
refresher.start()
编辑:固定代码,使其适合PEP8
答案 2 :(得分:0)
正如Niklas所说,我认为你正在寻找Refresh()方法:http://wxpython.org/docs/api/wx.Window-class.html#Refresh。