Установка даты в виджете CalendarCtrl wx.calendar
Я пытаюсь установить выбранную дату так, чтобы это всегда был текущий день. Как бы я пошел по этому поводу?
В настоящее время, если я оставляю виджет более одного дня, выбранная дата не обновляется. Таким образом, дата будет позади. Как мне изменить выбранную дату, чтобы она всегда была актуальной?
1 ответ
Решение
Вы можете установить таймер (wx.Timer
) экземпляр для производства wx.EVT_TIMER
каждые несколько секунд / минут и связать событие с методом, отвечающим за обновление календаря с текущей датой (wx.DateTime_Now()
) если необходимо.
Здесь у вас есть минимальный рабочий демонстрационный код (попробуйте изменить дату: она вернется к текущей дате через секунду):
import wx
import wx.calendar
class MyCalendar(wx.Frame):
def __init__(self, *args, **kargs):
wx.Frame.__init__(self, *args, **kargs)
self.cal = wx.calendar.CalendarCtrl(self, -1, wx.DateTime_Now())
self.timer = wx.Timer(self)
self.timer.Start(1000)
self.Bind(wx.EVT_TIMER, self.update_date)
def update_date(self, evt):
date = wx.DateTime_Now()
self.cal.SetDate(date)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = MyCalendar(None)
frame.Show()
app.MainLoop()