【问题标题】:Using wx.CallLater in wxPython在 wxPython 中使用 wx.CallLater
【发布时间】:2011-08-16 15:31:50
【问题描述】:

我正在尝试制作一个处理基本时间相关功能的对象。我想要它,所以当引用任何属性(例如 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)

【问题讨论】:

  • 您的错误可能在其他地方。您能否发布一个完整(但最少)的示例来演示您遇到的问题?我们需要查看更多代码。
  • 您是否正在创建TimeDate 的实例?你必须这样做。

标签: python date loops time wxpython


【解决方案1】:

你想要的是 wx.Timer,而不是 wx.CallAfter 或 wx.CallLater。有关详细信息,请参阅以下有关计时器的教程:

http://www.blog.pythonlibrary.org/2009/08/25/wxpython-using-wx-timers/

这两个“Call*”方法都只触发一次。

【讨论】:

    【解决方案2】:

    使用 wx.CallAfter 代替 - wx.CallLater is a class 并且应该以不同的方式使用。

    另一方面,wx.CallAfter 似乎正是您所需要的。

    【讨论】:

      【解决方案3】:

      我认为wx.CallAfterwx.CallLater 都只被调用一次.....

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多