pyqt中日期与时间-动态显示及各种格式
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