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对SQLite数据库操作
Apr 06 Python
python实现FTP服务器服务的方法
Apr 11 Python
深入理解python中函数传递参数是值传递还是引用传递
Nov 07 Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 Python
Python实现的凯撒密码算法示例
Apr 12 Python
修复 Django migration 时遇到的问题解决
Jun 14 Python
python 实现一次性在文件中写入多行的方法
Jan 28 Python
这可能是最好玩的python GUI入门实例(推荐)
Jul 19 Python
python+jinja2实现接口数据批量生成工具
Aug 28 Python
pytorch之添加BN的实现
Jan 06 Python
Pytorch之finetune使用详解
Jan 18 Python
python中xlrd模块的使用详解
Feb 01 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生成excel文件的简单方法
2014/02/08 PHP
PHP基于GD库的图像处理方法小结
2016/09/27 PHP
PHP简单装饰器模式实现与用法示例
2017/06/22 PHP
不能再简单的无闪刷新验证码原理很简单
2007/11/05 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
2015/06/17 Javascript
jQuery调用Webservice传递json数组的方法
2016/08/06 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
JavaScript和TypeScript中的void的具体使用
2019/09/12 Javascript
在vue中配置不同的代理同时访问不同的后台操作
2020/09/11 Javascript
vuex的使用和简易实现
2021/01/07 Vue.js
前端如何实现动画过渡效果
2021/02/05 Javascript
[05:20]2018DOTA2亚洲邀请赛主赛事第三日战况回顾 LGD率先挺进胜者组决赛
2018/04/06 DOTA
windows10系统中安装python3.x+scrapy教程
2016/11/08 Python
Numpy掩码式数组详解
2018/04/17 Python
python 调用有道api接口的方法
2019/01/03 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
python识别图像并提取文字的实现方法
2019/06/28 Python
Python图片的横坐标汉字实例
2019/12/04 Python
html5摇一摇代码优化包括DeviceMotionEvent等等
2014/09/01 HTML / CSS
美国网上订购鲜花:FTD
2016/09/23 全球购物
Omio波兰:全欧洲低价大巴、火车和航班搜索和比价
2018/02/16 全球购物
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
经典c++面试题四
2015/05/14 面试题
北京某科技有限公司C# .net笔试题
2014/09/27 面试题
在校大学生自我评价范文
2014/09/12 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
婚礼答谢礼品
2015/01/20 职场文书
药店营业员岗位职责
2015/04/14 职场文书
童年读书笔记
2015/06/26 职场文书
辞职信怎么写?
2019/05/21 职场文书
800字作文之大雪
2019/12/04 职场文书
使用nginx配置访问wgcloud的方法
2021/06/26 Servers