设置wx.calendar的CalendarCtrl控件日期

1 投票
1 回答
2410 浏览
提问于 2025-04-16 18:30

我想把选中的日期设置成当前的日期。请问我该怎么做呢?

现在如果我让这个小工具放着超过一天,选中的日期就不会自动更新了。这样的话,日期就会落后。请问我该怎么改变选中的日期,让它始终保持最新呢?

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

撰写回答