You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置wx.adv.DatePickerCtrl的日期格式为dd mm yyyy

wx.adv.DatePickerCtrl 修改日期显示格式为dd mm yyyy的方法

核心原因

wx.adv.DatePickerCtrl是对操作系统原生日期选择组件的封装,默认显示格式完全跟随当前系统的区域短日期配置,控件本身未暴露单独修改显示格式的公开API,因此在官方文档中找不到对应配置项是正常情况。
你在类Unix命令行执行date得到的是系统长日期输出,和控件读取的短日期区域配置不是同一项。

可用实现方案

  • 方案1:临时指定程序locale,无需修改系统全局设置
    类Unix环境下,控件初始化时会读取当前进程的LC_TIME区域配置来决定日期格式,你只需要在初始化控件前,将进程的时间区域设置为使用dd mm yyyy格式的区域即可(比如英式英语en_GB.UTF-8,和你命令行输出的BST英国夏令时环境匹配)。
    修正后的完整可运行代码:
import wx
import wx.adv
import datetime
import locale

class MainFrame(wx.Frame):
    def __init__(self, *args, **kwargs):
        super().__init__(None, *args, **kwargs)
        self.Title = 'Date format'

        self.panel = MainPanel(self)
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.panel)
        self.SetSizer(sizer)
        self.Center()
        self.Show()


class MainPanel(wx.Panel):
    def __init__(self, parent, *args, **kwargs):
        super().__init__(parent, *args, **kwargs)
        # 初始化控件前设置时间区域为dd/mm/yyyy格式的英式英语
        try:
            locale.setlocale(locale.LC_TIME, 'en_GB.UTF-8')
        except locale.Error:
            # 兜底:若系统未生成en_GB区域,可替换为locale -a列出的其他dd/mm/yyyy格式区域
            locale.setlocale(locale.LC_TIME, 'C.UTF-8')
        date_picker = wx.adv.DatePickerCtrl(self)
        date_picker.SetValue(datetime.date.today())

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(date_picker)
        self.SetSizer(sizer)


if __name__ == '__main__':
    wx_app = wx.App()
    MainFrame()
    wx_app.MainLoop()

提示:如果en_GB.UTF-8设置报错,可以在终端执行locale -a查看当前系统已生成的所有区域列表,选择短日期规则为日/月/年的区域即可。

  • 方案2:替换为支持自定义格式的纯Python日期控件
    如果不想修改程序locale,或者需要完全自定义日期显示格式(比如自定义分隔符、固定位数),可以直接使用wxPython内置的wx.lib.masked.DateCtrl控件。该控件不依赖系统原生组件,支持直接传入格式字符串指定显示规则,使用逻辑和原生DatePickerCtrl基本一致。
    核心调用代码:
from wx.lib.masked import DateCtrl
# 直接指定格式为 两位日 两位月 四位年,分隔符可自行替换为空格、斜杠、横杠等
date_picker = DateCtrl(self, formatfmt='%d %m %Y')

内容的提问来源于stack exchange,提问作者Psionman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 03:57:20