PyQt5用QTimer编写电子时钟

【说明】

本文用 PyQt5 的QTimer类的两种方式实现电子时钟

【效果图】

【知识点】

QTimer类提供了定时器信号/槽和单触发定时器。

它在内部使用定时器事件来提供更通用的定时器。

QTimer很容易使用:创建一个QTimer,使用start()来开始并且把它的timeout()连接到适当的槽。当这段时间过去了,它将会发射timeout()信号。

【实现】

1、定时器信号/槽方式

 1 class MyTimer(QWidget):
 2     def __init__(self, parent = None):
 3         # ......
 4
 5         #新建一个QTimer对象
 6         self.timer = QTimer()
 7         self.timer.setInterval(1000)
 8         self.timer.start()
 9
10         # 信号连接到槽
11         self.timer.timeout.connect(self.onTimerOut)
12
13     # 定义槽
14     def onTimerOut(self):
15         self.lcd.display(time.strftime("%X",time.localtime()))

完整代码:

 1 import sys
 2 import time
 3 from PyQt5.QtCore import *
 4 from PyQt5.QtGui import *
 5 from PyQt5.QtWidgets import *
 6
 7 class MyTimer(QWidget):
 8     def __init__(self, parent = None):
 9         super(MyTimer, self).__init__(parent)
10         self.resize(200, 100)
11         self.setWindowTitle("QTimerDemo")
12
13         self.lcd = QLCDNumber()
14         self.lcd.setDigitCount(10)
15         self.lcd.setMode(QLCDNumber.Dec)
16         self.lcd.setSegmentStyle(QLCDNumber.Flat)
17         self.lcd.display(time.strftime("%X",time.localtime()))
18
19         layout = QVBoxLayout()
20         layout.addWidget(self.lcd)
21         self.setLayout(layout)
22
23         #新建一个QTimer对象
24         self.timer = QTimer()
25         self.timer.setInterval(1000)
26         self.timer.start()
27
28         # 信号连接到槽
29         self.timer.timeout.connect(self.onTimerOut)
30
31     # 定义槽
32     def onTimerOut(self):
33         self.lcd.display(time.strftime("%X",time.localtime()))
34
35
36
37 app = QApplication(sys.argv)
38 t = MyTimer()
39 t.show()
40 sys.exit(app.exec_())

2、定时器事件方式

 1 class MyTimer(QWidget):
 2     def __init__(self, parent = None):
 3         # ......
 4
 5         #新建一个QTimer对象
 6         self.timer = QBasicTimer() # QTimer()貌似不行,不知何故?
 7         self.timer.start(1000, self)
 8
 9     # 覆写计时器事件处理函数timerEvent()
10     def timerEvent(self, event):
11         self.lcd.display(time.strftime("%X",time.localtime()))

完整代码:

 1 import sys
 2 import time
 3 from PyQt5.QtCore import *
 4 from PyQt5.QtGui import *
 5 from PyQt5.QtWidgets import *
 6
 7 class MyTimer(QWidget):
 8     def __init__(self, parent = None):
 9         super(MyTimer, self).__init__(parent)
10         self.resize(200, 100)
11         self.setWindowTitle("QTimerDemo")
12
13         self.lcd = QLCDNumber()
14         self.lcd.setDigitCount(10)
15         self.lcd.setMode(QLCDNumber.Dec)
16         self.lcd.setSegmentStyle(QLCDNumber.Flat)
17         self.lcd.display(time.strftime("%X",time.localtime()))
18
19         layout = QVBoxLayout()
20         layout.addWidget(self.lcd)
21         self.setLayout(layout)
22
23         #新建一个QTimer对象
24         self.timer = QBasicTimer() # QTimer()貌似不行,不知何故?
25         self.timer.start(1000, self)
26
27     # 覆写计时器事件处理函数timerEvent()
28     def timerEvent(self, event):
29         if event.timerId() == self.timer.timerId():
30             self.lcd.display(time.strftime("%X",time.localtime()))
31         else:
32             super(WigglyWidget, self).timerEvent(event)
33
34
35 app = QApplication(sys.argv)
36 t = MyTimer()
37 t.show()
38 sys.exit(app.exec_())

时间: 2024-10-05 23:54:38

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

Qt - 与众不同的电子时钟

Qt的电子时钟是个老掉牙的demo了,但是利用lcdNumber显示的样子非常老土(下图第一个显示效果),一看就知道是从qt帮助文档里摘出来的example,毫无新意. 美化一下系统时钟,抛开固有控件躯壳,DIY效果让人眼前一亮,要知道细节决定UI成败.这也是我一直所追求的. 思路非常简单,就是利用label或者button贴图变化显示. 一说到贴图,有人可能就会认为代码冗余,哐哐的加载图片大坨的判断和代码量……其实贴图也讲究方法,比如我实现了一个: getPngName(QChar x)来获取

JavaScript电子时钟+倒计时

JavaScript时间类 获取时分秒: getHours() getMinutes(); getSeconds(); 获取年月日: getFullYear(); getMonth() + 1;//获取的月份需要+1: getDate(); //日期 getDay(); //获取的是星期,0-->星期天 实例:(效果图) <!DOCTYPE html> <html lang="en"> <head> <meta charset="

利用51单片机制作的电子时钟

最近研究起来了单片机,用的是国产STC98C52芯片. STC89C52是STC公司生产的一种低功耗.高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器.STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能.在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活.超有效的解决方案. 买了很长时间了可是一直在那里放着,今天重新拿出来写了一段电子时钟的C++程序,利用充电宝供

4-2电子时钟中的运算符重载

4-2 电子时钟中的运算符重载 Time Limit: 1000MS Memory limit: 65536K 题目描述 通过本题目的练习可以运算符重载的方法: 设计一个时间类Time,私有数据成员有hour(时).minute(分).second(秒): 公有成员函数有:setHour(int)设置数据成员hour的值,非法的输入默认为12:setMinue(int)设置数据成员minute的值,非法输入默认为0:setSecond(int)设置数据成员second的值,非法输入默认为0:se

基于单片机的电子时钟(有报时和定时)

我相信电工类的专业,对于单片机这个老东西是很熟悉的.下面.是我YID的一个电子时钟,包含了一个时钟的基本功能,定时和报时.(如果没有C51和单片机的基础知识可以先看看)话不多说.这来上来了: 要资料点击这里:下载地址1:下载地址2: 资料清单: (1)原件: (2) 控制流程图: (3)电路图(由于电路截图比较大,这里就不贴出来了.需要的朋友可以点击上面的下载地址下载) (4)最关键的地方来了,(电子时钟的c代码实现): #include<reg51.h> //头文件  定义单片机内部寄存器

《ASP.NET1200例》C#在网页上编写动态时钟

包含Timer类的命名空间有3个 Timer Class (System.Threading)‎ Timer Class (System.Windows.Forms)‎ 一般用于窗体程序 Timer Class (System.Timers)‎  一般用于控制台程序 using System; using System.Timers; class Program { public static void Main() { Timer t = new System.Timers.Timer(100

一款纯JavaScript的圆形电子时钟

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>一款纯JavaScript的圆形电子时钟丨

美女时钟+电子时钟

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <title>美女时钟</ti

JS的Form文本框内的电子时钟

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>JS的Form文本框内的电子时钟丨石家庄玻璃隔断厂家</TITLE> </HEAD> <body bgcolor="#ffffff" onLoad="startclock();"> <scri