1. 程式人生 > 其它 >pyqt中日期與時間-動態顯示及各種格式

pyqt中日期與時間-動態顯示及各種格式

技術標籤:軟體杯pyqt5python

pyqt5中動態顯示時間

網上帖子

'''
動態顯示當前時間
QTimer:如果完成周期性任務可以使用這個
QThread:如果完成單個任務可以使用這個
多執行緒:用於同時完成多個任務
'''
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class Activetime(QWidget):
    #初始化
    def __init__(self):
        super(Activetime, self).__init__()
        self.initUI()
    def initUI(self):
        self.setWindowTitle("動態顯示時間")
        self.resize(200,100)

        self.lable=QLabel("顯示當前時間")
        self.button1=QPushButton("開始時間")
        self.button2=QPushButton("結束")
        #設定網格佈局
        layout=QGridLayout()

        self.timer=QTimer()
        self.timer.timeout.connect(self.showtime)#這個通過呼叫槽函式來重新整理時間
        layout.addWidget(self.lable,0,0,1,2)
        layout.addWidget(self.button1,1,0)
        layout.addWidget(self.button2,1,1)

        self.button1.clicked.connect(self.starttimer)
        self.button2.clicked.connect(self.endtimer)
        self.setLayout(layout)


    def showtime(self):
        time=QDateTime.currentDateTime()#獲取當前時間
        timedisplay=time.toString("yyyy-MM-dd hh:mm:ss dddd")#格式化一下時間
        print(timedisplay)
        self.lable.setText(timedisplay)

    def starttimer(self):
        self.timer.start(1000)#每隔一秒重新整理一次,這裡設定為1000ms
        self.button1.setEnabled(False)
        self.button2.setEnabled(True)

    def endtimer(self):
        self.timer.stop()
        self.button1.setEnabled(True)
        self.button2.setEnabled(False)

if __name__=="__main__":
    app=QApplication(sys.argv)
    main=Activetime()
    main.show()
    sys.exit(app.exec_())


在這裡插入圖片描述

 self.button1.setEnabled(True)
 self.button2.setEnabled(False)

這裡設定就要是保證一開始的按鈕是關閉的,點選之後開始和結束的相互的替換也可以直接寫成開啟軟體就直接顯示當前的顯示時間就是不用設定開始和結束的按鈕 直接獲取時間

個人實現

實現要求:

要求開啟系統可以自動獲取當地時間並動態更新

#面板類初始化
#開始週期工作
self.timer = QTimer()
##這個通過呼叫槽函式來重新整理時間
self.timer.timeout.connect(self.showTime)
#每隔一秒重新整理一次,這裡設定為1000ms
self.timer.start(1000)
#接下來是設定面板一開啟是所顯示的時間
#設定日期牌
self.dateTimeEdit = QtWidgets.QDateTimeEdit(self.centralwidget)
#設定時間牌
self.dateTimeEdit1 = QtWidgets.QDateTimeEdit(self.centralwidget)
#設定日期牌位置
self.dateTimeEdit.setGeometry(QtCore.QRect(870, 50, 111, 21))
#設定日期牌獲得當前時間
self.dateTimeEdit.setDateTime(QtCore.QDateTime.currentDateTime())
#設定日期牌的顯示格式只要當前時間的日期部分
self.dateTimeEdit.setDisplayFormat("yyyy/MM/dd")
#設定日期牌的名稱
self.dateTimeEdit.setObjectName("dateTimeEdit")
#設定時間牌位置
self.dateTimeEdit1.setGeometry(QtCore.QRect(870, 70, 111, 21))
#設定時間牌獲得當前時間
self.dateTimeEdit1.setDateTime(QtCore.QDateTime.currentDateTime())
#設定時間牌的顯示格式只要當前時間的時間部分
self.dateTimeEdit1.setDisplayFormat("hh:mm:ss")
#設定時間牌的名稱
self.dateTimeEdit1.setObjectName("dateTimeEdit1")
#在面板上顯示時間牌和日期牌
self.dateTimeEdit.raise_()
self.dateTimeEdit1.raise_()

#面板類內的函式
def showTime(self):
    #與上述一致初始化的在面板上的時間一致,不過是每一秒呼叫一次,產生動態顯示
    time = QDateTime.currentDateTime()
    self.dateTimeEdit.setGeometry(QtCore.QRect(870, 50, 111, 21))
    self.dateTimeEdit.setDateTime(QtCore.QDateTime.currentDateTime())
    self.dateTimeEdit.setDisplayFormat("yyyy/MM/dd")
    self.dateTimeEdit.setObjectName("dateTimeEdit")
    self.dateTimeEdit1.setGeometry(QtCore.QRect(870, 70, 111, 21))
    self.dateTimeEdit1.setDateTime(QtCore.QDateTime.currentDateTime())
    self.dateTimeEdit1.setDisplayFormat("hh:mm:ss")
    self.dateTimeEdit1.setObjectName("dateTimeEdit1")
    self.dateTimeEdit.raise_()
    self.dateTimeEdit1.raise_()

在這裡插入圖片描述

pyqt5樣式

返回當前日期和時間設定

from PyQt5 import QtCore, QtWidgets

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.setWindowModality(QtCore.Qt.WindowModal)
        Dialog.resize(690, 437)
        Dialog.setAutoFillBackground(True)
        Dialog.setSizeGripEnabled(True)
        self.calendarWidget = QtWidgets.QCalendarWidget(Dialog)
        self.calendarWidget.setGeometry(QtCore.QRect(230, 30, 431, 291))
        self.calendarWidget.setObjectName("calendarWidget")
        self.dateEdit = QtWidgets.QDateEdit(Dialog)
        self.dateEdit.setGeometry(QtCore.QRect(30, 80, 171, 22))
        self.dateEdit.setObjectName("dateEdit")
        self.dateTimeEdit = QtWidgets.QDateTimeEdit(Dialog)
        self.dateTimeEdit.setEnabled(True)
        self.dateTimeEdit.setGeometry(QtCore.QRect(10, 190, 211, 31))
        self.dateTimeEdit.setToolTip("")
        self.dateTimeEdit.setWrapping(False)
        self.dateTimeEdit.setFrame(True)   #邊框可見
        self.dateTimeEdit.setReadOnly(False)    #設定只讀模式
        self.dateTimeEdit.setButtonSymbols(QtWidgets.QAbstractSpinBox.UpDownArrows)
        self.dateTimeEdit.setSpecialValueText("")
        self.dateTimeEdit.setKeyboardTracking(True)
        self.dateTimeEdit.setCurrentSection(QtWidgets.QDateTimeEdit.DaySection)
        self.dateTimeEdit.setCalendarPopup(True)
        self.dateTimeEdit.setCurrentSectionIndex(3)
        self.dateTimeEdit.setTimeSpec(QtCore.Qt.LocalTime)
        self.dateTimeEdit.setObjectName("dateTimeEdit")

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

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_()

main檔案中設定(將獲取當前日期時間的程式碼放在main檔案中,避免QT設計師更改介面時 程式碼改動)

-*- coding: utf-8 -*-
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5 import QtWidgets
from Ui_QDataTimeEdit import Ui_Dialog

class Dialog(QDialog, Ui_Dialog):
    def __init__(self, parent=None):
        super(Dialog, self).__init__(parent)
        self.setupUi(self)
        self.dateTimeEdit.setDateTime(QDateTime.currentDateTime())
        self.dateEdit.setDate(QDate.currentDate())


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    ui = Dialog()
    ui.show()
    sys.exit(app.exec_())

一些常用的技巧:

self.dateTimeEdit = QtWidgets.QDateTimeEdit(self.widget)
self.dateTimeEdit.setFrame(False)  #去除邊框
self.dateTimeEdit.setDate(QtCore.QDate(2018, 10, 25))  #設定日期
self.dateTimeEdit.setTime(QtCore.QTime(11, 0, 0))    #設定時間11:00
self.dateTimeEdit.setObjectName("dateTimeEdit")    #設定物件名稱

"""
方式1:
from PyQt5.QtCore import QDate,QTime
##設定為當前日期
self.dateTimeEdit.setDateTime(QDate.currentDate())   
##設定為當前時間
self.dateTimeEdit.setDateTime(QTime.currentTime())   

方式2:
from PyQt5.QtCore import QDateTime
##設定當前日期和時間
self.dateTimeEdit.setDateTime(QDateTime.currentDateTime())    
"""
##同理設定dataEdit是一樣的
from PyQt5.QtCore import QDate
self.dateEdit.setDate(QDate.currentDate())

打印出不同格式的日期和時間

from PyQt5.QtCore import QDate, QTime, QDateTime, Qt

"""返回當前日期"""
now = QDate.currentDate()
print(now)  #PyQt5.QtCore.QDate(2018, 12, 3)
print(now.toString())     #週一 12月 3 2018
print(now.toString(Qt.ISODate))     #2018-12-03
print(now.toString(Qt.DefaultLocaleLongDate))       #2018年12月3日, 星期一

"""返回當前日期和時間"""
datetime = QDateTime.currentDateTime()
print(datetime)     #PyQt5.QtCore.QDateTime(2018, 12, 3, 15, 9, 41, 976)
print(datetime.toString())    #週一 12月 3 15:09:41 2018
print(datetime.toString(Qt.ISODate))        #2018-12-03T15:09:41
print(datetime.toString(Qt.DefaultLocaleLongDate))      #2018年12月3日, 星期一 15:09:41

"""返回當前時間"""
time = QTime.currentTime()
print(time)     #PyQt5.QtCore.QTime(15, 12, 9, 980)
print(time.toString())      #15:12:09
print(time.toString(Qt.ISODate))        #15:12:09
print(time.toString(Qt.DefaultLocaleLongDate))      #15:12:09