PyQt5使用QTimer实现电子时钟


Posted in Python onJuly 29, 2019

本文用 PyQt5 的QTimer类的两种方式实现电子时钟,供大家参考,具体内容如下

【效果图】

PyQt5使用QTimer实现电子时钟

【知识点】

QTimer类提供了定时器信号/槽和单触发定时器。

它在内部使用定时器事件来提供更通用的定时器。

QTimer很容易使用:创建一个QTimer,使用start()来开始并且把它的timeout()连接到适当的槽。当这段时间过去了,它将会发射timeout()信号。

【实现】

1、定时器信号/槽方式

class MyTimer(QWidget):
  def __init__(self, parent = None):  
    # ......
    
    #新建一个QTimer对象    
    self.timer = QTimer()   
    self.timer.setInterval(1000)    
    self.timer.start()
     
    # 信号连接到槽    
    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)
    
    #新建一个QTimer对象    
    self.timer = QTimer()   
    self.timer.setInterval(1000)    
    self.timer.start()
     
    # 信号连接到槽    
    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、定时器事件方式

class MyTimer(QWidget):
  def __init__(self, parent = None):
    # ......
    
    #新建一个QTimer对象    
    self.timer = QBasicTimer() # QTimer()貌似不行,不知何故?
    self.timer.start(1000, self) 
  
  # 覆写计时器事件处理函数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)
    
    #新建一个QTimer对象    
    self.timer = QBasicTimer() # QTimer()貌似不行,不知何故?
    self.timer.start(1000, self) 
  
  # 覆写计时器事件处理函数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_())

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
浅谈python中的变量默认是什么类型
Sep 11 Python
Python编程实战之Oracle数据库操作示例
Jun 21 Python
Python网络编程详解
Oct 31 Python
python实现报表自动化详解
Nov 16 Python
python3 读取Excel表格中的数据
Oct 16 Python
Pandas统计重复的列里面的值方法
Jan 30 Python
对python For 循环的三种遍历方式解析
Feb 01 Python
python sklearn库实现简单逻辑回归的实例代码
Jul 01 Python
python+opencv实现车牌定位功能(实例代码)
Dec 24 Python
使用Python文件读写,自定义分隔符(custom delimiter)
Jul 05 Python
python抢购软件/插件/脚本附完整源码
Mar 04 Python
Python import模块的缓存问题解决方案
Jun 02 Python
django框架面向对象ORM模型继承用法实例分析
Jul 29 #Python
Python将string转换到float的实例方法
Jul 29 #Python
django foreignkey(外键)的实现
Jul 29 #Python
python实现翻转棋游戏(othello)
Jul 29 #Python
Django如何将URL映射到视图
Jul 29 #Python
python3获取当前目录的实现方法
Jul 29 #Python
Python在Matplotlib图中显示中文字体的操作方法
Jul 29 #Python
You might like
使用HMAC-SHA1签名方法详解
2013/06/26 PHP
js异步加载的三种解决方案
2013/03/04 Javascript
JS实现自适应高度表单文本框的方法
2015/02/25 Javascript
Jsonp post 跨域方案
2015/07/06 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
Angular的$http与$location
2016/12/26 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
vue2实现数据请求显示loading图
2017/11/28 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
2018/10/12 Javascript
js面试题之异步问题的深入理解
2020/09/20 Javascript
零基础写python爬虫之爬虫编写全记录
2014/11/06 Python
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
python一键升级所有pip package的方法
2017/01/16 Python
Python实现两款计算器功能示例
2017/12/19 Python
浅谈django orm 优化
2018/08/18 Python
python文件拆分与重组实例
2018/12/10 Python
Python3实现取图片中特定的像素替换指定的颜色示例
2019/01/24 Python
对Python3 解析html的几种操作方式小结
2019/02/16 Python
Python OpenCV之图片缩放的实现(cv2.resize)
2019/06/28 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
python数值基础知识浅析
2019/11/19 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
2020/06/02 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
德国亚洲食品网上商店:asiafoodland.de
2019/12/28 全球购物
经典优秀个人求职自荐信格式
2013/09/25 职场文书
会计专业自荐信范文
2013/12/02 职场文书
开学典礼演讲稿
2014/05/23 职场文书
工程售后服务方案
2014/06/08 职场文书
2014年纪委工作总结
2014/12/05 职场文书
Java设计模式中的命令模式
2022/04/28 Java/Android
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技