在wxPython中使用wx.CallLater

0 投票
3 回答
4427 浏览
提问于 2025-04-16 16:47

我正在尝试创建一个可以处理基本时间相关功能的对象。我希望当引用任何属性(比如 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.CallAfterwx.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*" 方法只会执行一次。

撰写回答