日期筛选及快进按钮

日期筛选及快进按钮

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

界面展示

日期筛选工具

代码

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值