PyQt5之QDateTimeEdit

PyQt5之QDateTimeEdit


QDateTimeEdit是一个允许用户编辑日期时间的控件,可以使用键盘上的上下键头按钮来增加或减少日期的时间值,QDateTimeEdit通过setDisplayFormat()函数来设置显示的日期时间格式

QDateTimeEdit类中常用方法

方法 描述
setDisplayFormat 设置日期的时间格式
yyyy:代表年份,用4为数表示
MM:代表月份,取值范围01-12
dd:代表日,取值范围01-31
HH:代表小时,取值范围00-23
mm:代表分钟,取值范围00-59
ss:代表秒,取值范围00-59
dateTime() 返回编辑的日期时间
time() 返回编辑的时间
date() 返回编辑的日期

隐藏右侧按钮

dateTimeEdit.setButtonSymbols(QAbstractSpinBox.NoButtons) #隐藏右侧按钮
dateTimeEdit.setAlignment(Qt.AlignCenter) #隐藏后居中

常用信号

信号 描叙
dateChanged 当日期改变时发射此信号
dateTimeChanged 当日期时间改变时发射此信号
timeChanged 当时间发生改变时发射此信号

界面与逻辑分离制作方式实例
Qt designer制作ui界面,保存名为ui
在这里插入图片描述
各控件类和名称右边对象查看器有
pyuic转换ui文件为code

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'ui.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(503, 356)
        Form.setStyleSheet("QWidget{\n"
"background-color: rgb(85, 0, 255);\n"
"}\n"
"\n"
"QDateEdit{\n"
"background-color: rgb(255, 255, 255);\n"
"}\n"
"\n"
"QTimeEdit{\n"
"background-color: rgb(255, 255, 255);\n"
"}\n"
"\n"
"QDateTimeEdit{\n"
"background-color: rgb(255, 255, 255);\n"
"}\n"
"\n"
"QLabel{\n"
"background-color: rgb(255, 255, 127);\n"
"}\n"
"\n"
"QPushButton{\n"
"background-color: rgb(255, 151, 90);\n"
"}\n"
"\n"
"QTextEdit{\n"
"color: rgb(255, 255, 255);\n"
"background-color: rgb(0, 0, 0);\n"
"}")
        self.dateEdit = QtWidgets.QDateEdit(Form)
        self.dateEdit.setGeometry(QtCore.QRect(120, 60, 110, 22))
        self.dateEdit.setObjectName("dateEdit")
        self.label = QtWidgets.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(20, 60, 91, 21))
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(Form)
        self.label_2.setGeometry(QtCore.QRect(150, 10, 181, 31))
        self.label_2.setStyleSheet("background-color: rgb(170, 255, 255);")
        self.label_2.setAlignment(QtCore.Qt.AlignCenter)
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(Form)
        self.label_3.setGeometry(QtCore.QRect(20, 100, 91, 21))
        self.label_3.setAlignment(QtCore.Qt.AlignCenter)
        self.label_3.setObjectName("label_3")
        self.label_4 = QtWidgets.QLabel(Form)
        self.label_4.setGeometry(QtCore.QRect(20, 140, 91, 21))
        self.label_4.setAlignment(QtCore.Qt.AlignCenter)
        self.label_4.setObjectName("label_4")
        self.timeEdit = QtWidgets.QTimeEdit(Form)
        self.timeEdit.setGeometry(QtCore.QRect(120, 100, 111, 22))
        self.timeEdit.setObjectName("timeEdit")
        self.dateTimeEdit = QtWidgets.QDateTimeEdit(Form)
        self.dateTimeEdit.setGeometry(QtCore.QRect(120, 140, 141, 22))
        self.dateTimeEdit.setObjectName("dateTimeEdit")
        self.showdate = QtWidgets.QLabel(Form)
        self.showdate.setGeometry(QtCore.QRect(270, 60, 121, 21))
        self.showdate.setText("")
        self.showdate.setObjectName("showdate")
        self.showtime = QtWidgets.QLabel(Form)
        self.showtime.setGeometry(QtCore.QRect(270, 100, 121, 21))
        self.showtime.setText("")
        self.showtime.setObjectName("showtime")
        self.showdatetime = QtWidgets.QLabel(Form)
        self.showdatetime.setGeometry(QtCore.QRect(270, 140, 121, 21))
        self.showdatetime.setText("")
        self.showdatetime.setObjectName("showdatetime")
        self.readdate = QtWidgets.QPushButton(Form)
        self.readdate.setGeometry(QtCore.QRect(400, 60, 81, 21))
        self.readdate.setObjectName("readdate")
        self.readtime = QtWidgets.QPushButton(Form)
        self.readtime.setGeometry(QtCore.QRect(400, 100, 81, 21))
        self.readtime.setObjectName("readtime")
        self.readdatetime = QtWidgets.QPushButton(Form)
        self.readdatetime.setGeometry(QtCore.QRect(400, 140, 81, 21))
        self.readdatetime.setObjectName("readdatetime")
        self.label_5 = QtWidgets.QLabel(Form)
        self.label_5.setGeometry(QtCore.QRect(20, 190, 91, 21))
        self.label_5.setAlignment(QtCore.Qt.AlignCenter)
        self.label_5.setObjectName("label_5")
        self.textEdit = QtWidgets.QTextEdit(Form)
        self.textEdit.setGeometry(QtCore.QRect(120, 190, 271, 151))
        self.textEdit.setObjectName("textEdit")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label.setText(_translate("Form", "日期控件"))
        self.label_2.setText(_translate("Form", "时间日期控件测试"))
        self.label_3.setText(_translate("Form", "时间控件"))
        self.label_4.setText(_translate("Form", "时间日期控件"))
        self.readdate.setText(_translate("Form", "读取日期"))
        self.readtime.setText(_translate("Form", "读取时间"))
        self.readdatetime.setText(_translate("Form", "读取日期时间"))
        self.label_5.setText(_translate("Form", "状态监控"))

MainCode

#!/usr/bin/python
# -*-coding: utf-8 -*-

import sys, time
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

from ui import Ui_Form #导入界面文件


class Main(QMainWindow, Ui_Form):
    def __init__(self):
        super(Main, self).__init__()

        self.setupUi(self) #初始化界面

        self.date_func() #日期初始化函数
        self.time_func() #时间初始化函数
        self.datetime_func() #日期时间初始化函数

        self.signal_func() #信号槽链接函数
    def signal_func(self):
        #按钮单击读取对应控件内容加载到标签,
        self.readdate.clicked.connect(self.showdate_func)
        self.readtime.clicked.connect(self.showtime_func)
        self.readdatetime.clicked.connect(self.showdatetime_func)

        #各控件状态改变时发送信号
        self.dateEdit.dateChanged.connect(lambda : self.showupdate(0) )
        self.timeEdit.timeChanged.connect(lambda : self.showupdate(1) )
        self.dateTimeEdit.dateChanged.connect(lambda : self.showupdate(2) )
        self.dateTimeEdit.timeChanged.connect(lambda : self.showupdate(3) )
        self.dateTimeEdit.dateTimeChanged.connect(lambda : self.showupdate(4) )

    # 日期控件
    def date_func(self):
        now_day = time.strftime("%Y-%m-%d", time.localtime()) #python获取格式化日期
        self.dateEdit.setDate(QDate.fromString(now_day, 'yyyy-MM-dd'))

        # self.dateEdit.setDate(QDate.currentDate()) #PyQt设置显示当前日期
        self.dateEdit.setDisplayFormat("yyyy-MM-dd") #设置显示格式

    #读取日期按钮槽函数
    def showdate_func(self):
        str_date = self.dateEdit.date().toString("yyyy-MM-dd") #获取控件格式化日期
        self.showdate.setText(str_date) #设置标签显示时间
        #说明:"yyyy-MM-dd" 可以省略部分获取指定年、月、日

    # 时间控件
    def time_func(self):
        now_day = time.strftime("%H:%M:%S", time.localtime()) #python获取格式化时间
        self.timeEdit.setTime(QTime.fromString(now_day, 'hh:mm:ss'))

        # self.timeEdit.setTime(QTime.currentTime()) #PyQt设置显示当前时间
        self.timeEdit.setDisplayFormat("HH:mm:ss") #设置显示格式

    #读取时间按钮槽函数
    def showtime_func(self):
        str_time = self.timeEdit.time().toString("hh:mm:ss") #获取控件格式化时间
        self.showtime.setText(str_time)
        # 说明:"hh:mm:ss" 可以省略部分获取指定时、分、秒

    # 日期时间控件
    def datetime_func(self):
        # 设置显示当前的日期时间
        now_day = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) #python获取格式化日期时间
        self.dateTimeEdit.setDateTime(QDateTime.fromString(now_day, 'yyyy-MM-dd hh:mm:ss'))

        # self.dateTimeEdit.setDateTime(QDateTime.currentDateTime())  # PyQt设置显示当前的日期时间
        self.dateTimeEdit.setDisplayFormat("yyyy-MM-dd HH:mm:ss") #设置显示格式

    #读取日期时间按钮槽函数
    def showdatetime_func(self):
        str_datetime = self.dateTimeEdit.dateTime().toString("yyyy-MM-dd hh:mm:ss")  # 获取控件格式化日期时间
        self.showdatetime.setText(str_datetime)
        # 说明:"yyyy-MM-dd hh:mm:ss" 可以省略部分获取指定年、月、日、时、分、秒

    # 各控件状态改变打印打印信号
    def showupdate(self,num):
        if num == 0:
            showstr = '日期控件日期改变'
        elif num == 1:
            showstr = '时间控件时间改变'
        elif num == 2:
            showstr = '日期时间控件日期改变'
        elif num == 3:
            showstr = '日期时间控件时间改变'
        elif num == 4:
            showstr = '日期时间控件日期或时间改变'
        self.textEdit.append(showstr)


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



发布了34 篇原创文章 · 获赞 54 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_42686768/article/details/88283061