PyQt5使用QTimer實(shí)現(xiàn)電子時(shí)鐘
本文用 PyQt5 的QTimer類的兩種方式實(shí)現(xiàn)電子時(shí)鐘,供大家參考,具體內(nèi)容如下
【效果圖】

【知識(shí)點(diǎn)】
QTimer類提供了定時(shí)器信號(hào)/槽和單觸發(fā)定時(shí)器。
它在內(nèi)部使用定時(shí)器事件來提供更通用的定時(shí)器。
QTimer很容易使用:創(chuàng)建一個(gè)QTimer,使用start()來開始并且把它的timeout()連接到適當(dāng)?shù)牟?。?dāng)這段時(shí)間過去了,它將會(huì)發(fā)射timeout()信號(hào)。
【實(shí)現(xiàn)】
1、定時(shí)器信號(hào)/槽方式
class MyTimer(QWidget):
def __init__(self, parent = None):
# ......
#新建一個(gè)QTimer對象
self.timer = QTimer()
self.timer.setInterval(1000)
self.timer.start()
# 信號(hào)連接到槽
self.timer.timeout.connect(self.onTimerOut)
# 定義槽
def onTimerOut(self):
self.lcd.display(time.strftime("%X",time.localtime()))
完整代碼:
import sys
import time
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class MyTimer(QWidget):
def __init__(self, parent = None):
super(MyTimer, self).__init__(parent)
self.resize(200, 100)
self.setWindowTitle("QTimerDemo")
self.lcd = QLCDNumber()
self.lcd.setDigitCount(10)
self.lcd.setMode(QLCDNumber.Dec)
self.lcd.setSegmentStyle(QLCDNumber.Flat)
self.lcd.display(time.strftime("%X",time.localtime()))
layout = QVBoxLayout()
layout.addWidget(self.lcd)
self.setLayout(layout)
#新建一個(gè)QTimer對象
self.timer = QTimer()
self.timer.setInterval(1000)
self.timer.start()
# 信號(hào)連接到槽
self.timer.timeout.connect(self.onTimerOut)
# 定義槽
def onTimerOut(self):
self.lcd.display(time.strftime("%X",time.localtime()))
app = QApplication(sys.argv)
t = MyTimer()
t.show()
sys.exit(app.exec_())
2、定時(shí)器事件方式
class MyTimer(QWidget):
def __init__(self, parent = None):
# ......
#新建一個(gè)QTimer對象
self.timer = QBasicTimer() # QTimer()貌似不行,不知何故?
self.timer.start(1000, self)
# 覆寫計(jì)時(shí)器事件處理函數(shù)timerEvent()
def timerEvent(self, event):
self.lcd.display(time.strftime("%X",time.localtime()))
完整代碼:
import sys
import time
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class MyTimer(QWidget):
def __init__(self, parent = None):
super(MyTimer, self).__init__(parent)
self.resize(200, 100)
self.setWindowTitle("QTimerDemo")
self.lcd = QLCDNumber()
self.lcd.setDigitCount(10)
self.lcd.setMode(QLCDNumber.Dec)
self.lcd.setSegmentStyle(QLCDNumber.Flat)
self.lcd.display(time.strftime("%X",time.localtime()))
layout = QVBoxLayout()
layout.addWidget(self.lcd)
self.setLayout(layout)
#新建一個(gè)QTimer對象
self.timer = QBasicTimer() # QTimer()貌似不行,不知何故?
self.timer.start(1000, self)
# 覆寫計(jì)時(shí)器事件處理函數(shù)timerEvent()
def timerEvent(self, event):
if event.timerId() == self.timer.timerId():
self.lcd.display(time.strftime("%X",time.localtime()))
else:
super(WigglyWidget, self).timerEvent(event)
app = QApplication(sys.argv)
t = MyTimer()
t.show()
sys.exit(app.exec_())
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
django之對FileField字段的upload_to的設(shè)定方法
今天小編就為大家分享一篇django之對FileField字段的upload_to的設(shè)定方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
使用Python解析FineReport模板數(shù)據(jù)集
這篇文章主要為大家詳細(xì)介紹了如何使用Python解析FineReport模板數(shù)據(jù)集,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解下2023-12-12
基于Python實(shí)現(xiàn)圍棋游戲的示例代碼
今天給大家?guī)硪黄趪宓脑创a分享。下面我們先看看效果。游戲進(jìn)去默認(rèn)為九路玩法,當(dāng)然也可以選擇十三路或是十九路玩法,感興趣的可以了解一下2022-05-05

