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切换pip安装源的方法详解
Nov 18 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
Feb 13 Python
Python实现的求解最大公约数算法示例
May 03 Python
python实现决策树分类
Aug 30 Python
python判断所输入的任意一个正整数是否为素数的两种方法
Jun 27 Python
python命令行工具Click快速掌握
Jul 04 Python
python Django 创建应用过程图示详解
Jul 29 Python
python线程安全及多进程多线程实现方法详解
Sep 27 Python
python模块导入的方法
Oct 24 Python
python3 tcp的粘包现象和解决办法解析
Dec 09 Python
Pyecharts绘制全球流向图的示例代码
Jan 08 Python
python 如何上传包到pypi
Dec 24 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
剖析 PHP 中的输出缓冲
2006/12/21 PHP
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
提高PHP编程效率 引入缓存机制提升性能
2010/02/15 PHP
PHP中的函数嵌套层数限制分析
2011/06/13 PHP
基于MySQL体系结构的分析
2013/05/02 PHP
zend Framework中的Layout(模块化得布局)详解
2013/06/28 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
PHP异常类及异常处理操作实例详解
2018/12/19 PHP
PHP+Redis开发的书签案例实战详解
2019/07/09 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
简单三步,搞掂内存泄漏
2007/03/10 Javascript
深入理解javaScript中的事件驱动
2013/05/21 Javascript
Node.js插件的正确编写方式
2014/08/03 Javascript
Js和JQuery获取鼠标指针坐标的实现代码分享
2015/05/25 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
2016/06/08 Javascript
js判断空对象的实例(超简单)
2016/07/26 Javascript
javaScript嗅探执行神器-sniffer.js
2017/02/14 Javascript
Javascript柯里化实现原理及作用解析
2020/10/22 Javascript
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
[47:45]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第一场 2月26日
2021/03/11 DOTA
解决Mac安装scrapy失败的问题
2018/06/13 Python
python使用tornado实现登录和登出
2018/07/28 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
python django生成迁移文件的实例
2019/08/31 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
利用PyTorch实现VGG16教程
2020/06/24 Python
Python判断变量是否是None写法代码实例
2020/10/09 Python
基于Python制作一副扑克牌过程详解
2020/10/19 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
2020/10/29 Python
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
瑞士领先的网上超市:LeShop.ch
2018/11/14 全球购物
thinkphp5 redis缓存新增方法实例讲解
2021/03/24 PHP
会计电算化大学生职业规划书
2014/02/05 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
Windows11插耳机没反应怎么办? win11耳机没声音的多种解决办法
2021/11/21 数码科技