#python #date #loops #time #wxpython
#python #Дата #циклы #время #wxpython
Вопрос:
Я пытаюсь создать объект, который обрабатывает базовые функции, связанные со временем. Я хочу, чтобы это было так, когда какой-либо из атрибутов (например, self.Указаны ссылки на время, они обновлены. Однако по какой-то причине wx.callLater(1000, self.Отметьте галочкой), похоже, не обновляет атрибуты. Он будет печатать только self.Один раз, а не каждую секунду (как я хочу).
Как бы мне добиться желаемого поведения? Должен ли я использовать что-то помимо wx.callLater (1000, self.Отметьте галочкой)?
Фрагмент :
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)
Комментарии:
1. Возможно, ваша ошибка где-то в другом месте. Можете ли вы опубликовать полный (но минимальный) пример, демонстрирующий проблему, с которой вы столкнулись? Нам нужно увидеть больше кода.
2. Вы создаете экземпляр
TimeDate
? Вы должны.
Ответ №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
это класс, и его следует использовать по-другому.
wx.CallAfter
с другой стороны, кажется, это именно то, что вам нужно.
Ответ №3:
Я думаю, что оба wx.CallAfter
и wx.CallLater
вызываются только один раз…..