• 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
  • 相关阅读:
    玩转MySQL之Linux下的简单操作(服务启动与关闭、启动与关闭、查看版本)
    玩转MySQL之Linux下修改默认编码
    机器学习算法及应用领域相关的中国大牛
    [转载]Python 包管理工具解惑
    Vim常用操作和快捷键技巧总结
    [转载]那些C++牛人的博客
    [转载]学习c/c++的好网站
    [转载]C++内存管理
    [转载]SQL数据库如何加快查询速度
    [转载]Python3.x和Python2.x的区别
  • 原文地址:https://www.cnblogs.com/hhh5460/p/4280612.html
Copyright © 2020-2023  润新知