在wxPython中使用wx.CallLater

时间:2011-05-01 22:14:50

标签: python date loops time wxpython

我正在尝试创建一个处理基本时间相关函数的对象。我想要它,所以当引用任何属性(例如 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 个答案:

答案 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.CallAfterwx.CallLater只被调用一次.....