【问题标题】:How to Refresh Python Script Once in Awhile?如何偶尔刷新 Python 脚本?
【发布时间】:2011-10-18 22:16:10
【问题描述】:

所以我创建了一个类,其中包含使用 wxPython 的 GUI。 如何让它每分钟刷新一次?

【问题讨论】:

    标签: python user-interface wxpython refresh reload


    【解决方案1】:

    对于间隔发生的事情,请使用Timer。来自WxPyWiki

    def on_timer(event):
        pass  # do whatever
    
    TIMER_ID = 100  # pick a number
    timer = wx.Timer(panel, TIMER_ID)  # message will be sent to the panel
    timer.Start(100)  # x100 milliseconds
    wx.EVT_TIMER(panel, TIMER_ID, on_timer)  # call the on_timer function
    

    由于某种原因,我尝试此代码时不起作用。原因是计时器必须是班级成员。如果您将该代码放入 init() 方法并添加 self.在计时器之前,它应该可以工作。如果没有,请尝试使 on_timer() 也成为类成员。 ——巴勃罗·安东尼奥


    当定时器运行时,我在关闭框架时遇到问题。

    我是这样处理的:

    def on_close(event):
        timer.Stop()
        frame.Destroy()
    
    wx.EVT_CLOSE(frame, on_close)
    

    【讨论】:

      【解决方案2】:

      我不使用 wxPython,但如果有一个名为 refresh 或类似名称的方法,您可以启动一个线程每分钟调用该方法。

      from threading import Thread
      from time import sleep
      
      def refreshApp(app, timespan):
          while app.isRunning:
              app.refresh()
              sleep(timespan)
      
      refresher = Thread(target=worker, args=(myAppInstance, 60))
      refresher.start()
      

      编辑:固定代码使其适合 PEP8

      【讨论】:

      • 你是说我的编码风格吗?
      • PEP8 不添加额外的空格来对齐这样的东西,并且在没有空格的情况下执行target=worker。我确定这是@MattJ 所指的对齐间距。此外,通常人们只在必要时使用尾随逗号。他也可能不喜欢您使用非描述性名称,例如 tworker,或者在 60 可以使用时使用 60.
      • 恕我直言,像我一样打算进口更清楚。我同意60。我认为,target = worker 也更清楚。但我会修复代码,使其适合 PEP8
      【解决方案3】:

      正如 Niklas 建议的那样,我认为您正在寻找 Refresh() 方法:http://wxpython.org/docs/api/wx.Window-class.html#Refresh

      【讨论】:

      • Refresh 只是强制重绘窗口的一部分。仍然需要调用Refresh“偶尔”...
      • 是的,你的帖子很好地涵盖了这部分。 wx.Timer 绝对是这里的最佳选择。
      • 知道了,但不知何故 Refresh() 方法不适用于 wx.Frame...不知道为什么,它肯定每隔几秒钟循环一次(打印一些东西以确保)但是 Refresh()不工作:\
      • 如果在调用 Refresh() 之后立即添加对 Frame 的 Update() 方法的调用,是否会发生任何变化?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 2017-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多