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中redis的安装和使用
Dec 04 Python
利用Python读取文件的四种不同方法比对
May 18 Python
python学习基础之循环import及import过程
Apr 22 Python
Scrapy使用的基本流程与实例讲解
Oct 21 Python
Python lambda表达式用法实例分析
Dec 25 Python
python多线程调用exit无法退出的解决方法
Feb 18 Python
Python根据当前日期取去年同星期日期
Apr 14 Python
Django框架models使用group by详解
Mar 11 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
Apr 10 Python
详解python的super()的作用和原理
Oct 29 Python
python 提取html文本的方法
May 20 Python
pandas:get_dummies()与pd.factorize()的用法及区别说明
May 21 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
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
使用sockets:从新闻组中获取文章(一)
2006/10/09 PHP
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
2014/06/23 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
javascript实现回车键提交表单方法总结
2015/01/10 Javascript
基于jquery animate操作css样式属性小结
2015/11/27 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
JavaScript编程中实现对象封装特性的实例讲解
2016/06/24 Javascript
微信开发 微信授权详解
2016/10/21 Javascript
原生js实现焦点轮播图效果
2017/01/12 Javascript
JS 实现随机验证码功能
2017/02/15 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
vue loadmore 组件滑动加载更多源码解析
2017/07/19 Javascript
JavaScript实现树的遍历算法示例【广度优先与深度优先】
2017/10/26 Javascript
Nodejs实现的操作MongoDB数据库功能完整示例
2019/02/02 NodeJs
原生js实现碰撞检测
2020/03/12 Javascript
js 数组当前行添加数据方法详解
2020/07/28 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
2020/11/04 Javascript
vue中如何添加百度统计代码
2020/12/19 Vue.js
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
详解Golang 与python中的字符串反转
2017/07/21 Python
详解Django的model查询操作与查询性能优化
2018/10/16 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
python excel和yaml文件的读取封装
2021/01/12 Python
Python实现Excel自动分组合并单元格
2021/02/22 Python
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
自主招生自荐信格式
2013/12/03 职场文书
青年志愿者先进事迹
2014/05/06 职场文书
故宫的导游词
2015/01/31 职场文书
2015大学生求职信范文
2015/03/20 职场文书
导游词之江南周庄
2019/12/06 职场文书