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的Template使用指南
Sep 11 Python
python内置函数:lambda、map、filter简单介绍
Nov 16 Python
python flask解析json数据不完整的解决方法
May 26 Python
python实现五子棋小程序
Jun 18 Python
详解解决Python memory error的问题(四种解决方案)
Aug 08 Python
Python如何调用JS文件中的函数
Aug 16 Python
Python函数式编程指南:对生成器全面讲解
Nov 19 Python
python @propert装饰器使用方法原理解析
Dec 25 Python
python中元组的用法整理
Jun 15 Python
Django一小时写出账号密码管理系统
Apr 29 Python
用Python实现一个打字速度测试工具来测试你的手速
May 28 Python
Python中json.load()和json.loads()有哪些区别
Jun 07 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/10/09 PHP
无JS,完全php面向过程数据分页实现代码
2012/08/27 PHP
php中引用符号(&)的使用详解
2013/11/13 PHP
php统计时间和内存使用情况示例分享
2014/03/13 PHP
PHP+jQuery+Ajax实现用户登录与退出
2015/04/27 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
javascript入门基础之私有变量
2010/02/23 Javascript
jQuery实现的Email中的收件人效果(按del键删除)
2011/03/20 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
简单的Jquery全选功能
2013/11/07 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
js闭包用法实例详解
2016/12/13 Javascript
JavaScript实现二分查找实例代码
2017/02/22 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
Layui表格行工具事件与数据回填方法
2019/09/13 Javascript
js实现3D旋转相册
2020/08/02 Javascript
wxPython学习之主框架实例
2014/09/28 Python
Python functools模块学习总结
2015/05/09 Python
将Python代码打包为jar软件的简单方法
2015/08/04 Python
Python简单网络编程示例【客户端与服务端】
2017/05/26 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
2020/02/07 Python
termux中matplotlib无法显示中文问题的解决方法
2021/01/11 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
自动一体化专业求职信
2014/03/15 职场文书
优质服务演讲稿
2014/05/14 职场文书
文明班级建设方案
2014/05/15 职场文书
企业承诺书怎么写
2014/05/24 职场文书
综艺节目策划方案
2014/06/13 职场文书
本科生自荐信
2014/06/18 职场文书
经典导游欢迎词
2015/01/26 职场文书
党员个人年度总结
2015/02/14 职场文书
餐饮店长岗位职责
2015/04/14 职场文书
win11无线投屏在哪设置? win11无线投屏功能的使用方法
2022/04/08 数码科技