【说明】

本文用 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_())

PyQt5用QTimer编写电子时钟的更多相关文章

  1. 公开课 之 tony 电子时钟 (课堂笔记)

    # tony 之电子时钟from PyQt5.QtWidgets import QApplication, QWidget, QLCDNumber, QDesktopWidget, QVBoxLayo ...

  2. JS实现电子时钟

          目前有个小项目,在首页头部导航栏里需要一个电子时钟的效果,于是我就采用如下代码实现了一个电子时钟的效果.不过不完美,第一种方式容易导致网页莫名其妙的异常,后来觉得可能是做的操作太多了,然后 ...

  3. Qt - 与众不同的电子时钟

     Qt的电子时钟是个老掉牙的demo了,但是利用lcdNumber显示的样子非常老土(下图第一个显示效果),一看就知道是从qt帮助文档里摘出来的example,毫无新意. 美化一下系统时钟,抛开固有控 ...

  4. Micropython TurnipBit 电子时钟 青少年编程入门

    电子时钟是一个很常用但是制作非常简单的小玩具了,对于Micropython初学者来说,制作一个电子时钟是非常简单又容易检验自己学习成果的实验了.TurnipBit相比于其他开发板,制作电子时钟就更加简 ...

  5. MFC桌面电子时钟的设计与实现

    目录 核心技术 需求分析 程序设计 程序展示 (一)核心技术 MFC(Micosoft Foundation Class Libay,微基础类库)是微基于Windows平台下的C++类库集合,MFC包 ...

  6. JavaScript电子时钟+倒计时

    JavaScript时间类      获取时分秒:          getHours()          getMinutes();          getSeconds();       获取 ...

  7. 桌面小部件----LED电子时钟实现

    桌面控件是通过 Broadcast 的形式来进行控制的,因此每个桌面控件都对应于一个BroadcastReceiver.为了简化桌面控件的开发,Android 系统提供了一个 AppWidgetPro ...

  8. [TPYBoard-Micropython之会python就能做硬件 3] 制作电子时钟

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.TPYboard V102板  一块 2.DS3231 ...

  9. 3分钟利用TurnipBit制作电子时钟

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 TurnipBit(www.turnipbit.com)是一个面向青少年的开发板 ...

随机推荐

  1. HBase RegionServer宕机处理恢复

    本文分析RegionServer宕机后这个region server上的region是如何在其他region server上恢复的. region server宕机后发生了什么   HMaster有一 ...

  2. 《CDN 之我见》原理篇——CDN的由来与调度

    CDN是将源站内容分发至全国所有的节点,从而缩短用户查看对象的延迟,提高用户访问网站的响应速度与网站的可用性的技术.它能够有效解决网络带宽小.用户访问量大.网点分布不均等问题. 为了让大家更全面的了解 ...

  3. PHP安装posix、pctl扩展

    安装问题 PHP Fatal error: Uncaught Error: Call to undefined function tsingsun\swoole\server\posix_kill() ...

  4. Ubuntu下安装指定版本的mysql

    1.编辑/etc/apt/sources.list和/etc/apt/sources.list.save, 手动加上deb http://archive.ubuntu.com/ubuntu trust ...

  5. Centos7 教程收集ing

    CentOS7 常用命令集合 https://blog.csdn.net/o0darknessyy0o/article/details/52072054#t1 1.centOS7下实践查询版本/CPU ...

  6. 多路I/O复用(select、poll、epoll)的比较学习:

    elect.poll.epoll之间的区别总结[整理]  转自:http://www.cnblogs.com/Anker/p/3265058.html   select,poll,epoll都是IO多 ...

  7. HTML头标签使用-又一次定向,refresh

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  8. [USACO08DEC]Patting Heads

    嘟嘟嘟 这题还是比较水的.首先O(n2)模拟显然过不了,那就换一种思路,考虑每一个数对答案的贡献,显然一个数a[i]会对后面的a[i] * 2, a[i] * 3,a[i] * 4……都贡献1,.那么 ...

  9. Python自动化之traceback

    import traceback try: 11/a except Exception: b = traceback.format_exc() traceback.format_exc()会存储详细的 ...

  10. windows下安装redis并设置自启动

    一.下载windows版本的Redis 去官网找了很久,发现原来在官网上可以下载的windows版本的,现在官网以及没有下载地址,只能在github上下载,官网只提供linux版本的下载 官网下载地址 ...