☰
PySide6 QDateTimeEdit 实战:6 步做出专业日期输入框
2026/10/23 2:27:36 网站建设 项目流程

PySide6 QDateTimeEdit 实战:6 步做出专业日期输入框

【免费下载链接】PySide6-Code-Tutorial可能是最好的PySide6中文教程!用代码实例讲解PySide6,附优质Demos、图标库、QSS皮肤、相关文章等分享!项目地址: https://gitcode.com/GitHub_Trending/py/PySide6-Code-Tutorial

做报名表单时,你常常需要用户填出生日期;做排班系统,又得让员工挑一个工作日和开始时间。日期时间控件 QDateTimeEdit 用几行配置就能接住这类需求。PySide6-Code-Tutorial 项目为它专门设了独立章节,配套可直接运行的示例代码,本文带你从"跑起来"讲到"接进业务",共 6 步。

最小可运行代码:先拿到一个能用的日期输入框

先别管配置,把它放到窗口里跑起来。QDateTimeEdit 不传参也能创建,但注意,空构造出来的是个"空壳":内部日期值无效,控件会显示一串短横线占位。稳妥做法是创建后立刻赋一个有效值:

from PySide6 import QtCore, QtWidgets # 空构造:控件能用,但内部日期值无效,显示占位横线 self.dte = QtWidgets.QDateTimeEdit(self) # 补上有效初始值,这里取当前日期时间 self.dte.setDateTime(QtCore.QDateTime.currentDateTime()) self.dte.move(200, 200) # 顺手指定位置

补一句:除了"空构造 + 赋值",构造函数也直接接受 QDate、QTime、QDateTime,初始值想设成今天,传一行QtCore.QDate.currentDate()就行。完整窗口版看创建示例源码。

本文所有示例都来自这个项目仓库,全是这种能直接跑、直接见效果的小脚本。

核心配置四件套:范围、格式、步长、日历弹窗

第 2 到第 5 步全在这一节。真实项目里这四项几乎是必配项,挨个过。

① 如何限制可选日期范围:日期范围限制

用户不该能选到一百年前或一百年后。日期时间模式下用 setMinimumDateTime、setMaximumDateTime 卡上下限;只显示日期时,setDateRange 直接吃两个 QDate;只显示时间则用 setTimeRange 传两个 QTime。超出范围的手输文本,控件会自动纠正到范围内最近的合法值,不用你自己拦截:

# 示例:只允许选 2024-03 到 2026-12 之间的日期时间 self.dte.setMinimumDateTime(QtCore.QDateTime(2024, 3, 1, 0, 0, 0)) self.dte.setMaximumDateTime(QtCore.QDateTime(2026, 12, 31, 23, 59, 59)) # 纯日期场景,两个 QDate 就够了 self.dte.setDateRange(QtCore.QDate(2024, 3, 1), QtCore.QDate(2026, 12, 31))

② 显示格式怎么写:setDisplayFormat 一次讲清

默认显示跟随系统区域设置。想自定义风格,调 setDisplayFormat 即可。格式串和 QLocale 的记法一致:yyyy 是四位年、MM 是月、dd 是日、HH 是 24 小时制、mm 是分、ss 是秒;"年""时"这类中文直接写就行,不会被当记号解析。只想显示时间的话,写 "HH:mm:ss" 这一句即可。

# 换两种风格:先日期后年的欧洲写法、纯中文写法 self.dte.setDisplayFormat("dd/MM/yyyy") # 15/03/2024 self.dte.setDisplayFormat("yyyy年MM月dd日") # 2024年3月15日

③ 增减步长怎么定:箭头点一下变多少

上下箭头的默认步长是 1。纯日期控件里步长 1 代表 1 天;想让员工按周挑班,设成 7 更顺。业务要求"每次调 15 分钟"时,步长按格式串里显示的时间精度生效。另外有个自适应模式,步长会跟着光标所在字段自动缩放,精度混用的场景值得开:

self.dte.setSingleStep(7) # 按周跳 # 步长随光标位置自适应,适合"年/月/日都要频繁调"的界面 self.dte.setStepType(QtWidgets.QAbstractSpinBox.AdaptiveDecimalStepType)

④ 一键开启 Qt 日历弹窗

一行代码,控件旁边多一个下拉按钮,点开就是可视化日历。挑日期这事,点日历永远比敲键盘、点箭头高效:

# 下拉按钮 + 日历面板,日期选择体验直接拉满 self.dte.setCalendarPopup(True)

这里先埋个雷

【免费下载链接】PySide6-Code-Tutorial可能是最好的PySide6中文教程!用代码实例讲解PySide6,附优质Demos、图标库、QSS皮肤、相关文章等分享!项目地址: https://gitcode.com/GitHub_Trending/py/PySide6-Code-Tutorial

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询