在wxPython中使用wx.CallLater
我正在尝试创建一个可以处理基本时间相关功能的对象。我希望当引用任何属性(比如 self.Time)时,它们都是最新的。然而,出于某种原因,wx.CallLater(1000, self.Tick) 似乎没有更新这些属性。它只会打印一次 self.Time,而不是每秒都打印一次(就像我想要的那样)。
我该如何实现我想要的效果呢?我是否应该使用除了 wx.CallLater(1000, self.Tick) 以外的其他方法?
代码片段:
import wx, re, time, win32api, calendar
class TimeDate :
def __init__ (self) :
self.Tick()
def Tick (self) :
self.Year = int(time.strftime("%Y"))
self.Month = int(time.strftime("%m"))
self.Calendar = calendar.month(self.Year, self.Month)
self.Date = time.strftime('%A, %B %d, %Y')
self.Time = time.strftime('%I:%M %S %p')
print self.Time
wx.CallLater(1000, self.Tick)
3 个回答
-2
我觉得 wx.CallAfter
和 wx.CallLater
这两个函数都是只会被调用一次的.....
0
使用 wx.CallAfter
吧 - wx.CallLater
是一个 类,用法和 wx.CallAfter
不一样。
而 wx.CallAfter
看起来正是你需要的东西。
2
你需要的是 wx.Timer,而不是 wx.CallAfter 或 wx.CallLater。想了解更多关于定时器的信息,可以看看下面这个教程:
http://www.blog.pythonlibrary.org/2009/08/25/wxpython-using-wx-timers/
那两个 "Call*" 方法只会执行一次。