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实现划词翻译
Apr 23 Python
Python的词法分析与语法分析
May 18 Python
Python的Django框架中settings文件的部署建议
May 30 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
Jan 10 Python
python画出三角形外接圆和内切圆的方法
Jan 25 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
Nov 21 Python
python 直接赋值和copy的区别详解
Aug 07 Python
python 实现二维字典的键值合并等函数
Dec 06 Python
如何设置PyCharm中的Python代码模版(推荐)
Nov 20 Python
如何用python批量调整视频声音
Dec 22 Python
虚拟环境及venv和virtualenv的区别说明
Feb 05 Python
python实现监听键盘
Apr 26 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中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
2013/09/03 Javascript
Javascript 多浏览器兼容总结(实战经验)
2013/10/30 Javascript
javascript实现英文首字母大写
2015/04/23 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
Bootstrap前端开发案例一
2016/06/17 Javascript
探索Vue.js component内容实现
2016/11/03 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
2017/06/23 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
2017/07/24 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
Vue组件通信之Bus的具体使用
2017/12/28 Javascript
详解weex默认webpack.config.js改造
2018/01/08 Javascript
Vue.js实现的表格增加删除demo示例
2018/05/22 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
2018/08/25 Javascript
vue-router懒加载速度缓慢问题及解决方法
2018/11/25 Javascript
深度了解vue.js中hooks的相关知识
2019/06/14 Javascript
vue页面更新patch的实现示例
2020/03/25 Javascript
Vue时间轴 vue-light-timeline的用法说明
2020/10/29 Javascript
JavaScript实现网页留言板功能
2020/11/23 Javascript
python创建进程fork用法
2015/06/04 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
CSS3支持IE6, 7, and 8的边框border属性
2012/12/28 HTML / CSS
美德好少年事迹材料
2014/01/19 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
党的群众路线教育实践活动查摆问题自查报告
2014/10/10 职场文书
离婚协议书怎么写的
2014/12/14 职场文书
2015年后备干部工作总结
2015/05/15 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
Python数据分析入门之数据读取与存储
2021/05/13 Python
Python selenium的这三种等待方式一定要会!
2021/06/10 Python