微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在wxPython中使用wx.CallLater

如何解决在wxPython中使用wx.CallLater

| 我正在尝试制作一个处理基本时间相关功能的对象。我想要这样,当引用任何属性(例如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
都只被叫过一次.....     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。