wxpython设计GUI:选中wxFormBuilder工具wxCalendarCtrl控件,实现自动选择日期功能

1. 期望实现功能

在这里插入图片描述
列表框选择“创建日期”后自动在界面最右侧显示日历,用户鼠标选中最右侧的日历日期后,文本框中自动显示查询日期的上下限,用户可以获取文本框中的日期,再点击“查询”按钮实现查询数据功能。

2. wxFormBuilder工具的Additional页签选择wxCalendarCtrl控件

在这里插入图片描述
使用wxFormBuilder工具搭建基础界面,Additional页签选择wxCalendarCtrl控件后,依次在Frame上布局静态文本框、列表框、文本输入框和按钮,调整布局成期望实现日期选择的界面。

3. 代码实现

		# 查询依据
        self.m_choice2.Bind(wx.EVT_CHOICE, self.show_calendar)
        self.last_date = ""
        self.m_calendar1.Bind(wx.adv.EVT_CALENDAR, self.choice_last_date)
    def show_calendar(self, event):
        search_condition = self.m_choice2.GetString(self.m_choice2.GetSelection())
        if search_condition in ["创建日期"]:
            self.m_calendar1.Show()
        else:
            self.m_calendar1.Hide()

    def choice_last_date(self, event):
        last_date = event.GetDate()
        value = str(last_date).split(" ")[0]
        self.m_textCtrl25.SetValue(value)
        self.last_date = value
        self.m_calendar1.Bind(wx.adv.EVT_CALENDAR, self.choice_next_date)

    def choice_next_date(self, event):
        next_date = event.GetDate()
        value = str(next_date).split(" ")[0]
        if self.last_date.strip() != "":
            value = self.last_date + "_" + value
        self.m_textCtrl25.SetValue(value)
        self.m_calendar1.Bind(wx.adv.EVT_CALENDAR, self.choice_last_date)

有关日历控件的触发事件wx.adv.EVT_CALENDAR可以查看如下链接地址理解。
链接地址:https://docs.wxpython.org/wx.adv.CalendarCtrl.html?highlight=calendarctrl#events-events-emitted-by-this-class
在这里插入图片描述

4. 界面效果

例如:查询7月份的数据,查询依据选择列表框中的“创建日期”,右侧自动显示日历,先鼠标左键双击选中7月1日,文本框自动显示“2022/7/1”;
在这里插入图片描述
再鼠标左键双击选中7月31日,文本框自动显示“2022/7/1_2022/7/31”。用户再选中一个日期即可取消当前文本框显示的“2022/7/1_2022/7/31”。
在这里插入图片描述
支持只选择一个日期进行查询,也支持前后两次鼠标左键双击选中相同的日期,如下图支持日期显示为“2022/7/2_2022/7/2”进行查询。
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Logintern09

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值