PyQt5 QDateTimeEdit – 设置QDateTime范围

  • Post category:Python
  1. PyQt5 QDateTimeEdit控件介绍
    PyQt5 QDateTimeEdit控件是一个带有不同时间周期的控件,可以设置时间、日期、日期时间或时间间隔。通过控件内置的日期时间对话框,用户可以选择一个特定日期和时间。

  2. PyQt5 QDateTimeEdit控件的常用参数

QDateTimeEdit控件可以使用的常用参数及其含义如下:

  • setDateTimeRange(minimum, maximum):
    设置控件所能允许的QDateTime范围
  • setDateTime(QDateTime):
    设置控件的初始日期时间值
  • setTimeRange(minimum, maximum):
    设置控件所能允许的QTime范围
  • setDateRange(minimum, maximum):
    设置控件所能允许的QDate范围
  • setDisplayFormat(format):
    设置控件的显示格式
  • dateTime():
    返回控件当前的时间日期值

  • PyQt5 QDateTimeEdit控件-设置QDateTime范围示例1

下面的示例演示如何使用setDateTimeRange()方法来设置控件的最小日期和最大日期:

from PyQt5.QtWidgets import QDialog, QApplication, QDateTimeEdit, QVBoxLayout
from PyQt5.QtCore import QDateTime, Qt
import sys


class Example(QDialog):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        self.setGeometry(200, 200, 300, 300)
        self.setWindowTitle('PyQt5 DateTimeEdit')

        vbox = QVBoxLayout()

        datetimeedit = QDateTimeEdit(self)
        datetimeedit.setDateTime(QDateTime.currentDateTime())
        datetimeedit.setDateTimeRange(QDateTime(QDate(2020, 1, 1), QTime(0, 0, 0)), 
                                      QDateTime(QDate(2030, 12, 31), QTime(23, 59, 59)))
        datetimeedit.setDisplayFormat('yyyy-MM-dd hh:mm:ss')

        vbox.addWidget(datetimeedit)
        self.setLayout(vbox)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

在该示例中,QDateTimeEdit控件的setDateTimeRange()方法被用来限制所允许的日期范围,这里设置为2020年1月1日到2030年12月31日。同时setDisplayFormat()方法被用来设置控件显示的时间日期格式。运行该示例,将会看到一个初始时间日期为当前时间的DateTimeEdit控件。从控件中选择一个日期时间,超出所允许的日期范围,将会无法被选择(不响应)。

  1. PyQt5 QDateTimeEdit控件-设置QDateTime范围示例2

下面的示例演示如何setTimeRange()方法来设置控件的最小时间和最大时间。

from PyQt5.QtWidgets import QApplication, QDateTimeEdit, QHBoxLayout, QWidget
from PyQt5.QtCore import QTime, Qt
import sys


if __name__ == '__main__':
    app = QApplication(sys.argv)
    MainWindow = QWidget()

    layout = QHBoxLayout()
    foo = QDateTimeEdit(QTime(0, 0, 0), MainWindow)
    foo2 = QDateTimeEdit(QTime.currentTime()).setTimeRange(QTime(0, 1), QTime(23, 59, 59))
    layout.addWidget(foo)
    layout.addWidget(foo2)

   MainWindow.setLayout(layout)
    MainWindow.show()
    sys.exit(app.exec_())

在该示例中,先用QDateTimeEdit构造函数设置初始的时间(第1个控件),然后用setTimeRange()方法设置能够选择的时间范围(第2个控件)。运行该示例,可以看到两个DateTimeEdit控件:一个选择时间时间无限制,另一个限制为1分钟到23小时59分59秒。