日期筛选及快进按钮

日期筛选及快进按钮

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

界面展示

日期筛选工具

代码

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()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来解答您的问题。首先,您可以使用PysimpleGUI创建一个GUI界面,让用户输入开始日期和结果日期,并且添加一个“筛选按钮。当用户点击“筛选按钮时,您可以编写代码来筛选数据并将结果显示在界面上。下面是一个简单的示例代码: ```python import PySimpleGUI as sg import pandas as pd # 创建GUI界面 layout = [ [sg.Text('开始日期'), sg.Input(key='start_date')], [sg.Text('结果日期'), sg.Input(key='end_date')], [sg.Button('筛选')], [sg.Text('筛选结果:')], [sg.Output(size=(60, 10))] ] window = sg.Window('数据筛选工具', layout) # 读取数据 data = pd.read_csv('data.csv') # 等待用户操作 while True: event, values = window.read() # 用户点击窗口的关闭按钮 if event == sg.WINDOW_CLOSED: break # 用户点击筛选按钮 if event == '筛选': start_date = pd.to_datetime(values['start_date']) end_date = pd.to_datetime(values['end_date']) # 筛选数据 filtered_data = data[(data['日期'] >= start_date) & (data['日期'] <= end_date)] # 显示筛选结果 print(filtered_data) ``` 在这个示例代码中,我们使用了PysimpleGUI创建了一个简单的GUI界面,让用户输入开始日期和结果日期。当用户点击“筛选按钮时,我们使用pandas库来读取数据并筛选数据。最后,我们将筛选结果打印在界面上。 请注意,这只是一个简单的示例代码,您需要根据您的具体需求行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值