Использование wx.CallLater в wxPython - PullRequest
0 голосов
/ 02 мая 2011

Я пытаюсь создать объект, который выполняет основные функции, связанные со временем. Я хочу, чтобы при ссылке на любой из атрибутов (например, 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 голосов
/ 02 мая 2011

То, что вы хотите, это wx.Timer, а не wx.CallAfter или wx.CallLater. Для получения дополнительной информации см. Следующий учебник по таймерам:

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

Оба эти метода "Call *" запускаются только один раз.

0 голосов
/ 21 апреля 2015

Я думаю, что wx.CallAfter и wx.CallLater вызываются только один раз .....

0 голосов
/ 02 мая 2011

Вместо этого используйте wx.CallAfter - wx.CallLater - это класс и должен использоваться по-другому.

wx.CallAfter, с другой стороны, кажется, что именно то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...