Установка даты в виджете CalendarCtrl wx.calendar

1

Я пытаюсь установить выбранную дату так, чтобы она всегда была текущим днем. Как я могу это сделать?

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

Теги:
calendar
wxpython

1 ответ

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()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню