日期时间数据|GUI应用程序设计|PyQt5

1、日期时间类和界面组件

[music]36308043[/music]

日期时间是经常遇到的数据类型,PyQt5中日期时间相关的类有以下几个

  • QTime:时间数据类型,仅表示时间,如15:21:13。
  • QDate:日期数据类型,仅表示日期,如2018-5-6。
  • QDateTime:日期时间数据类型,表示日期和时间,如2022-08-17 17:12:43

PyQt5中有以下几个专门用于日期、时间编辑和显示的界面组件

  • QTimeEdit:编辑和显示时间的组件
  • QDateEdit:编辑和显示日期的组件。若calendarPopup属性设置为True,运行时右侧按钮变成下拉按钮,单击按钮时出现一个日历选择框,用于在日历上选择日期
  • QDateTimeEdit:编辑和显示日期时间的组件,也有calendarPopup属性
  • QCalendarWidget:一个用日历形式选择日期的组件。在日历上点击日期发生变化时发射信号selectionChanged(),可响应此信号读取选择的日期
日期时间数据|GUI应用程序设计|PyQt5插图
1-2

2、日期时间数据的获取并转换为字符串

界面上的“读取当前日期时间”按钮用于获取当前日期时间并转换为字符串显示,其槽函数是on_btnGetTime_clicked()。
代码中用QDateTime的类函数(也就是C++中类的静态函数)currentDateTime()获取当前日期时间,并赋值给变量curDateTime。然后用curDateTime变量设置界面上3个日期时间编辑器的日期或时间值,利用了QDateTime的date()和time()函数分别提取日期和时间。
其实,QTime和QDate类也有各自的类函数分别获取当前时间和日期,类函数QTime. currentTime()返回当前时间,类函数QDate.currentDate()返回当前日期。

QTime和QDate类也有各自的类函数分别获取当前时间和日期,类函数QTime. currentTime()返回当前时间,类函数QDate.currentDate()返回当前日期。
日期时间转换为字符串使用了QDateTime的toString()函数,分别用不同的格式显示时间、日期、日期时间。QDateTime、QTime、QDate都有函数toString(),它们的函数参数是相同的,且遵循相同的格式规则。例如QDateTime的toString()函数的Python函数原型是:

toString(self, formatStr) -> str

它将日期时间数据按照formatStr指定的格式转换为字符串。formatStr是一个字符串,包含一些特定的字符表示日期或时间的各个部分,下表是用于日期时间显示的常用格式符。

日期时间数据|GUI应用程序设计|PyQt5插图1
1-1

在设置日期时间显示字符串格式时,还可以使用填字符,甚至使用汉字,例如,日期显示格式可以设置为:

curDateTime.toString("yyyy年MM月dd日")

3、字符串转换为日期时间

同样,也可以将字符串转换为QTime、QDate或QDateTime类型,这三个类都有类函数fromString(),且参数形式相同,例如QDateTime.fromString()函数原型为:

fromString(dateTimeStr, formatStr) -> QDateTime

注意,类函数没有self参数。第1个参数dateTimeStr是日期时间字符串,第2个参数formatStr是字符串表示的格式,按照表1-1的格式字符定义。例如:

dttm=QDateTime.fromString("2022-08-17 17:32:02", "yyyy-MM-dd hh:mm:ss")

4、QLineEdit的inputMask

在将字符串转换为日期时间数据时,需要字符串具有指定的格式,例如图1-2上的“设置日期”按钮的槽函数代码是:

def on_btnSetDate_clicked(self):    ##"设置日期"按钮
         dtStr=self.ui.editDate.text()
         dt=QDate.fromString(dtStr, "yyyy-MM-dd")
         self.ui.dateEdit.setDate(dt)

其中的dtStr是读取的界面上一个QLineEdit组件里的字符串,这个字符串需要符合日期格式“yyyy-MM-dd”,如果不符合这个格式,转换就会出错。
为了限定QLineEdit的输入符合某些格式,可以设置其inputMask属性。在设计图1-2的窗体时,为3个显示时间、日期、日期时间的QLineEdit组件设置了inputMask属性。inputMask属性的设置内容及其意义如表1-3所示,在没有输入任何数据时,其显示如图1-4所示。

日期时间数据|GUI应用程序设计|PyQt5插图2
1-3
日期时间数据|GUI应用程序设计|PyQt5插图3
1-4
日期时间数据|GUI应用程序设计|PyQt5插图4

这样用inputMask属性对输入格式做了限制后,可以避免一些无效的输入。inputMask属性设置还有很多具体的格式定义,在此就不照搬帮助文件进行介绍了,需要用到时去查Qt的帮助文件即可。

版权声明:
作者:RHZ
链接:https://www.rhzhz.cn/?p=677
来源:RHZ | 用文字记录工作和学习生活
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
日期时间数据|GUI应用程序设计|PyQt5
1、日期时间类和界面组件 [music]36308043[/music] 日期时间是经常遇到的数据类型,PyQt5中日期时间相关的类有以下几个 QTime:时间数据类型,仅表……
<<上一篇
下一篇>>