Как обновить Python Script один раз в то время? - PullRequest
1 голос
/ 03 августа 2011

Итак, я создал класс, который содержит графический интерфейс с использованием wxPython.Как сделать так, чтобы он обновлял себя, скажем, каждую минуту?

Ответы [ 3 ]

2 голосов
/ 03 августа 2011

Для вещей, которые происходят с интервалами, используйте Таймер .From 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 () членом класса.- PabloAntonio


У меня были проблемы с закрытием кадра, когда работал таймер.

Вот как я справился с этим:

def on_close(event):
    timer.Stop()
    frame.Destroy()

wx.EVT_CLOSE(frame, on_close)
0 голосов
/ 03 августа 2011

Как предположил Никлас, я думаю, вы ищете метод Refresh (): http://wxpython.org/docs/api/wx.Window-class.html#Refresh.

0 голосов
/ 03 августа 2011

Я не работаю с 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()

EDIT : исправлен код, который соответствует PEP8

...