日期筛选及快进按钮
- 日常设计中经常要对表格的数据进行日期筛选。这里展示了一个具有开始日期、结束日期和快进按钮的功能组合。
界面展示

代码
import wx.adv
class MyPanel(wx.Panel):
def __init__(self, parent):
super().__init__(parent)
font = self.GetFont()
font.SetPointSize(12)
self.SetFont(font)
self.end_date = wx.adv.DatePickerCtrl(self, style=wx.adv.DP_DROPDOWN)
self.start_date = wx.adv.DatePickerCtrl(self, style=wx.adv.DP_DROPDOWN)
self.time_search()
def time_search(self):
"""时间查询条"""
box = wx.BoxSizer()
box_time = wx.BoxSizer()
box_btn = wx.BoxSizer()
box.Add(box_time, 0, wx.ALL, 5)
box.Add(box_btn, 0, wx.TOP, 10)
box_time.Add(wx.StaticText(self, -1, "开始日期:"), 0, wx.ALIGN_CENTER)
box_time.Add(self.start_date, 0, wx.ALL, 5)
box_time.Add(wx.StaticText(self, -1, "结束日期:"), 0, wx.ALIGN_CENTER)
box_time.Add(self.end_date, 0, wx.ALL, 5)
box_btn.Add(wx.Button(self, wx.ID_BACKWARD, "上月"))
box_btn.Add(wx.Button(self, wx.ID_FORWARD, "下月"))
box_btn.Add(wx.Button(self, wx.ID_YESTOALL, "全年"))
box_btn.Add(wx.Button(self, wx.ID_MORE, "本月"))
box_btn.Add(wx.Button(self, wx.ID_DEFAULT, "今日"))
self.SetSizerAndFit(box)
self.Bind(wx.EVT_BUTTON, self.btn_handler)
def btn_handler(self, event):
"""时间快进按钮编程"""
eid = event.GetId()
today = wx.DateTime.Today()
date = self.start_date.GetValue()
if eid == wx.ID_BACKWARD:
date = wx.DateTime.FromDMY(1, date.month, date.year) - wx.DateSpan(days=1)
self.end_date.SetValue(date)
date = wx.DateTime.FromDMY(1, date.month, date.year)
self.start_date.SetValue(date)
elif eid == wx.ID_FORWARD:
date = date.GetLastMonthDay()
date = date + wx.DateSpan(days=1)
self.start_date.SetValue(date)
self.end_date.SetValue(date.GetLastMonthDay())
elif eid == wx.ID_YESTOALL:
date = wx.DateTime.FromDMY(1, 0, date.year)
self.start_date.SetValue(date)
date = wx.DateTime.FromDMY(31, 11, date.year)
self.end_date.SetValue(date)
elif eid == wx.ID_MORE:
date = wx.DateTime.FromDMY(1, today.month, today.year)
self.start_date.SetValue(date)
self.end_date.SetValue(today.GetLastMonthDay())
elif eid == wx.ID_DEFAULT:
self.start_date.SetValue(today)
self.end_date.SetValue(today)
app = wx.App()
frm = wx.Frame(None, -1, "时间查找条", size=(850, 400))
MyPanel(frm)
frm.Center()
frm.Show()
app.MainLoop()