PyQt6第四章控件功能之4.2常用控件(4.2.11日期时间:QDateTimeEdit)

4.2.11日期时间:QDateTimeEdit

1. 日期时间及其格式

2. 弹出日历

日期时间控件允许编辑日期,它属于QDateTimeEdit类。可以通过鼠标或者键盘和上、下箭头按钮来增加或减少日期时间值。通过currentDateTime()函数来获得当前日期时间。

QDateTimeEdit 类中的常用方法如下:

setDisplayFormat():

设置日期时间格式:

yyyy,代表年份,用4位数表示

MM,代表月份,取值范围为01~12

dd,代表日,取值范围为01~31

HH,代表小时,取值范围为00~23

mm,代表分钟,取值范围为00~59

ss,代表秒,取值范围为00~59

setMinimumDate():设置控件的最小日期

setMaximumDate():设置控件的最大日期

time():返回编辑的时间

date():返回编辑的日期

setCalendarPopup():参数为True,弹出日历

QDateTimeEdit类中的常用信号如下:

dateChanged:当日期改变时发射此信号

dateTimeChanged:当日期时间改变时发射此信号

timeChanged:当时间改变时发射此信号

1. 日期时间及其格式

QDateEdit和QTimeEdit类均继承自 QDateTimeEdit 类。QDateEdit用来编辑控件的日期,仅包括年月日。QTimeEdit用来编辑控件的时间,仅包括小时、分钟和秒。 QdateTimeEdit可同时操作日期和时间。 设置显示格式:

2. 弹出日历

QDateTimeEdit 和QDateEdit对象调用 setCalendarPopup (True),即可弹出日历。如果设置了日期范围,不在范围内的日期是无法选择的。

【例4.14】 QDateTimeEdit 日期时间测试,如下:

import sys  # 导入sys模块,用于处理Python解释器相关的操作,如命令行参数等。

from PyQt6.QtWidgets import *  # 从PyQt6库中导入QtWidgets模块,包含所有GUI组件。

from PyQt6.QtCore import QDate, QDateTime  # 从PyQt6的QtCore模块中导入QDate和QDateTime类,用于处理日期和时间。


class MyWidget(QWidget):  # 定义一个名为MyWidget的类,继承自QWidget,作为主窗口。

    def __init__(self):  # 初始化方法,当创建MyWidget对象时自动调用。

        super(MyWidget, self).__init__()  # 调用父类QWidget的初始化方法。

        self.initUI()  # 调用自定义的initUI方法来初始化用户界面。

    def initUI(self):  # 初始化用户界面的方法。

        self.setWindowTitle('QDateTimeEdit测试')  # 设置窗口的标题为“QDateTimeEdit测试”。

        self.resize(300, 100)  # 设置窗口的大小为宽300像素,高100像素。

        vlayout = QVBoxLayout()  # 创建一个垂直布局对象vlayout。

        self.dateTime = QDateTimeEdit(QDateTime.currentDateTime(),
                                      self)  # 创建一个QDateTimeEdit控件,显示当前日期和时间,并设置其父窗口为当前MyWidget对象。

        self.dateTime.setDisplayFormat("yyyy-MM-dd HH:mm:ss")  # 设置QDateTimeEdit控件的显示格式为“年-月-日 时:分:秒”。

        # 设置最小日期
        self.dateTime.setMinimumDate(QDate.currentDate().addDays(-365))  # 设置QDateTimeEdit控件可显示的最小日期为当前日期减去365天。

        # 设置最大日期
        self.dateTime.setMaximumDate(QDate.currentDate().addDays(365))  # 设置QDateTimeEdit控件可显示的最大日期为当前日期加上365天。

        self.dateTime.setCalendarPopup(True)  # 设置当点击QDateTimeEdit控件时弹出日历。

        # 连接信号与槽
        self.dateTime.dateChanged.connect(self.changedFunc)  # 当日期改变时,调用self.changedFunc方法。

        self.dateTime.dateTimeChanged.connect(self.changedFunc)  # 当日期和时间都改变时,调用self.changedFunc方法。

        self.dateTime.timeChanged.connect(self.changedFunc)  # 当时间改变时,调用self.changedFunc方法。

        self.btn = QPushButton("获得日期和时间")  # 创建一个QPushButton对象,显示文本为“获得日期和时间”,并设置其父窗口为当前MyWidget对象。

        self.btn.clicked.connect(self.clickedFunc)  # 当按钮被点击时,调用self.clickedFunc方法。

        vlayout.addWidget(self.dateTime)  # 将QDateTimeEdit控件添加到垂直布局vlayout中。

        vlayout.addWidget(self.btn)  # 将QPushButton按钮添加到垂直布局vlayout中。

        self.setLayout(vlayout)  # 将MyWidget的布局设置为vlayout。

    # 日期时间发生改变时执行
    def changedFunc(self, dtime):  # 定义一个方法,当日期或时间发生改变时调用。

        print(dtime)  # 打印传入的日期和时间。

    # 单击按钮执行
    def clickedFunc(self):  # 定义一个方法,当按钮被点击时调用。

        dateTime = self.dateTime.dateTime()  # 获取当前QDateTimeEdit控件中的日期和时间。

        maxDateTime = self.dateTime.maximumDateTime()  # 获取QDateTimeEdit控件设置的最大日期和时间。

        print('日期时间=%s' % str(dateTime))  # 打印获取的日期和时间。

        print('最大日期时间=%s' % str(maxDateTime))  # 打印最大日期和时间。


if __name__ == '__main__':  # 检查当前脚本是否作为主程序运行。

    app = QApplication(sys.argv)  # 创建一个QApplication对象,这是PyQt6应用程序的入口点。

    w = MyWidget()  # 创建一个MyWidget对象。

    w.show()  # 显示MyWidget窗口。

    sys.exit(app.exec())  # 进入Qt应用程序的主循环,等待用户交互。当应用程序结束时,通过sys.
这段代码主要实现了一个基于PyQt6的图形用户界面(GUI)应用程序,该应用程序包含一个日期时间选择器(QDateTimeEdit)和一个按钮(QPushButton)。用户可以通过日期时间选择器选择一个日期和时间,也可以通过按钮来获取当前选择的日期和时间。

使用的布局和控件

  • 布局
    • QVBoxLayout:垂直布局,用于组织窗口中的部件,从上到下依次是日期时间选择器和按钮。
  • 控件
    • QWidget:作为主窗口的基类。
    • QDateTimeEdit:日期时间选择器控件,允许用户选择一个日期和时间。
    • QPushButton:按钮控件,用户可以点击该按钮来执行某个操作。

说明:

1.创建日期时间对象,将当前日期时间作为初值,设置它的最小日期时间和最大日期时间。

2.连接日期、日期时间和时间关联的槽函数。

3.日期时间改变,命令行窗口显示日期时间对象值。

4.获得日期时间,显示最大日期时间。

关键语句

  1. self.setWindowTitle('QDateTimeEdit测试'):设置窗口的标题为“QDateTimeEdit测试”。

  2. self.dateTime = QDateTimeEdit(QDateTime.currentDateTime(), self):创建一个QDateTimeEdit实例,用于显示和编辑日期和时间。初始化时显示当前日期和时间。

  3. self.dateTime.setDisplayFormat("yyyy-MM-dd HH:mm:ss"):设置日期时间的显示格式为“年-月-日 时:分:秒”。

  4. self.dateTime.setMinimumDate(QDate.currentDate().addDays(-365)) 和 self.dateTime.setMaximumDate(QDate.currentDate().addDays(365)):设置日期时间选择器的最小和最大日期范围,分别为当前日期的前365天和后365天。

  5. self.dateTime.setCalendarPopup(True):设置点击日期时间选择器时弹出日历。

  6. 信号与槽的连接:

    • self.dateTime.dateChanged.connect(self.changedFunc)
    • self.dateTime.dateTimeChanged.connect(self.changedFunc)
    • self.dateTime.timeChanged.connect(self.changedFunc)
    • self.btn.clicked.connect(self.clickedFunc)

    这些语句将QDateTimeEditdateChangeddateTimeChangedtimeChanged信号,以及QPushButtonclicked信号分别连接到MyWidget类的changedFuncclickedFunc槽函数上。

  7. def changedFunc(self, dtime): 和 def clickedFunc(self)::定义了两个槽函数。changedFunc在日期时间发生改变时被调用,并打印当前的日期时间;clickedFunc在按钮被点击时被调用,获取当前的日期时间以及日期时间选择器的最大日期时间,并打印它们。

  8. self.setLayout(vlayout):将垂直布局vlayout设置为窗口的布局。

总的来说,这段代码创建了一个简单的GUI窗口,包含一个日期时间选择器和一个按钮。用户可以通过选择器选择日期和时间,也可以通过按钮查看当前选择的日期时间。当日期时间发生改变时,程序会打印出当前的日期时间。

 

  • 28
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个Python GUI库PyQt5中QComboBox控件的使用方法和实例: QComboBox是PyQt5中的一个下拉列表框控件,可以方便地在图形界面中实现下拉列表框功能。以下是QComboBox控件的详细使用方法和实例: 1. 在PyQt5中导入QComboBox控件: ``` python from PyQt5.QtWidgets import QComboBox ``` 2. 创建一个QComboBox控件对象: ``` python combo_box = QComboBox() ``` 3. 添加下拉列表框选项: 可以通过addItem()方法添加下拉列表框选项,也可以在创建QComboBox控件时直接传入选项列表: ``` python combo_box.addItem('选项1') combo_box.addItem('选项2') combo_box.addItem('选项3') # 或者 options = ['选项1', '选项2', '选项3'] combo_box = QComboBox(self) combo_box.addItems(options) ``` 4. 获取当前选中的选项: 可以通过currentIndex()方法获取当前选中的选项的索引值,也可以通过currentText()方法获取当前选中的选项的文本内容: ``` python index = combo_box.currentIndex() text = combo_box.currentText() ``` 5. 为下拉列表框添加事件: 可以为下拉列表框添加事件,例如选项改变时触发事件。可以通过currentIndexChanged()方法来实现: ``` python combo_box.currentIndexChanged.connect(self.on_combo_box_changed) def on_combo_box_changed(self, index): # index为当前选中的选项的索引值 print(index) ``` 下面是一个完整的例子: ``` python from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QComboBox, QVBoxLayout import sys class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('QComboBox控件使用例子') self.setGeometry(300, 300, 300, 200) label = QLabel('请选择一项:', self) combo_box = QComboBox(self) combo_box.addItem('选项1') combo_box.addItem('选项2') combo_box.addItem('选项3') combo_box.currentIndexChanged.connect(self.on_combo_box_changed) layout = QVBoxLayout() layout.addWidget(label) layout.addWidget(combo_box) self.setLayout(layout) self.show() def on_combo_box_changed(self, index): print(index) if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) ``` 该例子创建了一个窗口,包含一个QLabel控件和一个QComboBox控件,当选项改变时会触发on_combo_box_changed()方法。当选项改变时,会在控制台输出当前选中的选项的索引值。 希望这个例子能够帮助你理解使用PyQt5中的QComboBox控件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值