PyQt5用QTimer編寫電子時鍾


 

【說明】

本文用 PyQt5 的QTimer類的兩種方式實現電子時鍾

 

【效果圖】

 

【知識點】

    QTimer類提供了定時器信號/槽和單觸發定時器。

    它在內部使用定時器事件來提供更通用的定時器。

    QTimer很容易使用:創建一個QTimer,使用start()來開始並且把它的timeout()連接到適當的槽。當這段時間過去了,它將會發射timeout()信號。

 

【實現】

1、定時器信號/槽方式

 1 class MyTimer(QWidget):
 2     def __init__(self, parent = None):    
 3         # ......
 4         
 5         #新建一個QTimer對象        
 6         self.timer = QTimer()      
 7         self.timer.setInterval(1000)       
 8         self.timer.start()
 9          
10         # 信號連接到槽       
11         self.timer.timeout.connect(self.onTimerOut)
12 
13     # 定義槽
14     def onTimerOut(self):        
15         self.lcd.display(time.strftime("%X",time.localtime()))

 

完整代碼:

 1 import sys
 2 import time
 3 from PyQt5.QtCore import *
 4 from PyQt5.QtGui import *
 5 from PyQt5.QtWidgets import *
 6 
 7 class MyTimer(QWidget):
 8     def __init__(self, parent = None):
 9         super(MyTimer, self).__init__(parent)      
10         self.resize(200, 100)      
11         self.setWindowTitle("QTimerDemo")
12         
13         self.lcd = QLCDNumber()      
14         self.lcd.setDigitCount(10)      
15         self.lcd.setMode(QLCDNumber.Dec)
16         self.lcd.setSegmentStyle(QLCDNumber.Flat)
17         self.lcd.display(time.strftime("%X",time.localtime()))
18 
19         layout = QVBoxLayout()
20         layout.addWidget(self.lcd)       
21         self.setLayout(layout)
22         
23         #新建一個QTimer對象        
24         self.timer = QTimer()      
25         self.timer.setInterval(1000)       
26         self.timer.start()
27          
28         # 信號連接到槽       
29         self.timer.timeout.connect(self.onTimerOut)
30 
31     # 定義槽
32     def onTimerOut(self):        
33         self.lcd.display(time.strftime("%X",time.localtime()))
34 
35 
36         
37 app = QApplication(sys.argv)
38 t = MyTimer()
39 t.show()
40 sys.exit(app.exec_())
View Code

 

2、定時器事件方式

 1 class MyTimer(QWidget):
 2     def __init__(self, parent = None):
 3         # ......
 4         
 5         #新建一個QTimer對象        
 6         self.timer = QBasicTimer() # QTimer()貌似不行,不知何故?
 7         self.timer.start(1000, self) 
 8     
 9     # 覆寫計時器事件處理函數timerEvent()
10     def timerEvent(self, event):
11         self.lcd.display(time.strftime("%X",time.localtime()))

 

完整代碼:

 1 import sys
 2 import time
 3 from PyQt5.QtCore import *
 4 from PyQt5.QtGui import *
 5 from PyQt5.QtWidgets import *
 6 
 7 class MyTimer(QWidget):
 8     def __init__(self, parent = None):
 9         super(MyTimer, self).__init__(parent)      
10         self.resize(200, 100)      
11         self.setWindowTitle("QTimerDemo")
12         
13         self.lcd = QLCDNumber()      
14         self.lcd.setDigitCount(10)      
15         self.lcd.setMode(QLCDNumber.Dec)
16         self.lcd.setSegmentStyle(QLCDNumber.Flat)
17         self.lcd.display(time.strftime("%X",time.localtime()))
18 
19         layout = QVBoxLayout()
20         layout.addWidget(self.lcd)       
21         self.setLayout(layout)
22         
23         #新建一個QTimer對象        
24         self.timer = QBasicTimer() # QTimer()貌似不行,不知何故?
25         self.timer.start(1000, self) 
26     
27     # 覆寫計時器事件處理函數timerEvent()
28     def timerEvent(self, event):
29         if event.timerId() == self.timer.timerId():
30             self.lcd.display(time.strftime("%X",time.localtime()))
31         else:
32             super(WigglyWidget, self).timerEvent(event)
33 
34         
35 app = QApplication(sys.argv)
36 t = MyTimer()
37 t.show()
38 sys.exit(app.exec_())
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM