【说明】

本文用 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. Beautifulsoup模块安装之pip命令

    1.在python引用 BeautifulSoup >>>from bs4 import BeautifulSoup 发现没有该模块 2.Linux输入 # pip install ...

  2. Go语言-windows安装配置篇

    Go-windows安装配置 前言 学习完了python基础,顺便也要提前学习一下go啦,抱着这样的心情,今晚尝试了安装一下go,很顺利的完成了,没有难度. 需要了解更多的关于Go的基本信息可以去维基 ...

  3. linux面试总结

    一.填空题:1. 在Linux系统中,以 文件 方式访问设备 .2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统.3. Linux文件系统中每个文件用 i节点 来标识. ...

  4. Java基础面试题(Hibernate)

    Hibernate是一个什么样的框架? Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hi ...

  5. nginx alias

    A path to the file is constructed by merely adding a URI to the value of the root directive. If a UR ...

  6. 10条Linux 命令了解服务器当前性能

    参考:http://www.infoq.com/cn/news/2015/12/linux-performance 1. uptime 如果电脑运行缓慢,执行 uptime 可以大致查看Linux服务 ...

  7. FreeMarker标签使用

    FreeMarker标签使用 模板技术在现代的软件开发中有着重要的地位,主要用于view层的展示,freemarker是比较流行的一种. 一.FreeMarker模板文件主要有4个部分组成 ①文本,直 ...

  8. 情绪ABC理论

    美国著名心理学家阿尔伯特·艾利斯 [Albert Ellis 1913.09.27]于20世纪50年代创立, 其理论认为引起人们情绪困扰的并不是外界发生的事件,而是人们对事件的态度.看法.评价等认知内 ...

  9. Raft一致性算法

    所有的分布式系统,都面临的一个问题是多个节点之间的数据共享问题,这个和团队协作的道理是一样的,成员可以分头干活,但总是需要共享一些必须的信息,比如谁是 leader, 都有哪些成员,依赖任务之间的顺序 ...

  10. 1877. [SDOI2009]晨跑【费用流】

    Description Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他 坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个 ...