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
原文地址:https://www.cnblogs.com/hhh5460/p/4280612.html