问题描述
|
我正在尝试制作一个处理基本时间相关功能的对象。我想要这样,当引用任何属性(例如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)
解决方法
您想要的是wx.Timer,而不是wx.CallAfter或wx.CallLater。有关更多信息,请参见以下有关计时器的教程:
http://www.blog.pythonlibrary.org/2009/08/25/wxpython-using-wx-timers/
这些“ Call *”方法都只能触发一次。
,请改用
wx.CallAfter
-wx.CallLater
是一类,应以不同的方式使用。
另一方面,wx.CallAfter
正是您所需要的。
,我认为wx.CallAfter
和wx.CallLater
都只被叫过一次.....