我正在尝试创建一个处理基本时间相关函数的对象。我想要它,所以当引用任何属性(例如 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)
答案 0 :(得分:2)
你想要的是wx.Timer,而不是wx.CallAfter或wx.CallLater。有关详细信息,请参阅以下有关计时器的教程:
http://www.blog.pythonlibrary.org/2009/08/25/wxpython-using-wx-timers/
这两种“Call *”方法只会触发一次。
答案 1 :(得分:0)
使用wx.CallAfter
代替 - wx.CallLater
is a class,并应以不同方式使用。
wx.CallAfter
似乎正是您所需要的。
答案 2 :(得分:-2)
我认为wx.CallAfter
和wx.CallLater
只被调用一次.....