第二十一篇 -- QTimer实现秒表功能
效果图:

程序一开始就开始计时,当完成了相关功能(在线程中完成)之后,就触发停止信号,停止定时器。
time.py
#!/usr/bin/env python
# _*_ coding: UTF-8 _*_
"""=================================================
@Project -> File : FDS -> play2.py
@IDE : PyCharm
@Author : zihan
@Date : 2020/4/30 10:45
@Desc :
================================================="""
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtCore import QThread, pyqtSignal, QTimer
from ui_play import Ui_MainWindow class TimeStop(QThread):
time_stop = pyqtSignal() # 当时间停止的信号 def __init__(self):
super().__init__() def run(self):
# ====================
# 进行一些操作
for i in range(60000000):
if i % 10000000 == 0:
print(i / 10000000 + 1) # ====================
self.time_stop.emit() class QmyMainWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent) # 调用父类构造函数
self.ui = Ui_MainWindow() # 创建UI对象
self.ui.setupUi(self) # 构造UI self.ui.label.setText("Elapsed Time".ljust(18) + "00:00:00") # 开启定时器
self.curtime = 0
self.timer = QTimer()
self.timer.start(1000) # 计时器每秒计数
# 绑定计时器显示标签
self.timer.timeout.connect(self.do_elapsed_time_set) self.myThread = TimeStop()
self.myThread.time_stop.connect(self.do_time_stop)
self.myThread.start() # 秒表显示
def do_elapsed_time_set(self):
# 显示流逝的时间
self.curtime = self.curtime + 1
hours = self.curtime / 3600
minutes_curtime = self.curtime % 3600
minutes = minutes_curtime / 60
seconds_curtime = minutes_curtime % 60
seconds = seconds_curtime
str_time = "%02d:%02d:%02d" % (hours, minutes, seconds)
self.ui.label.setText("Elapsed Time".ljust(18) + str_time) def do_time_stop(self):
self.timer.stop()
self.ui.label_2.setText("Stoped") if __name__ == '__main__':
app = QApplication(sys.argv) # 创建app
form = QmyMainWindow()
form.show()
sys.exit(app.exec_())
OK.
第二十一篇 -- QTimer实现秒表功能的更多相关文章
- Python开发【第二十一篇】:Web框架之Django【基础】
Python开发[第二十一篇]:Web框架之Django[基础] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5237704.html Python之 ...
- Python之路【第二十一篇】Django ORM详解
ORM回顾 关系对象映射(Object Relational Mapping,简称ORM). django中遵循 Code Frist 的原则,即:根据代码中定义的类来自动生成数据库表. 对于ORM框 ...
- Python之路【第二十一篇】:JS基础
JavaScript的基础学习(一) 一.JavaScript概述 1.1 JavaScript的历史 ● 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在 ...
- Python之路(第二十一篇) re模块
一.re模块 正则表达式本身是一种小型的.高度专业化的编程语言,正则表达式就是字符串的匹配规则,在多数编程语言里都有相应的支持,python里对应的模块是re,正则表达式模式被编译成一系列的字节码,然 ...
- 【Python之路】第二十一篇--Memcached、Redis
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
- 第二十一篇 json,picklz,xml模块
Json模块 Json模块比较简单,仅有四个方法dumps()和loads()方法,dump()和load()方法,但是却非常的常用,实用性极强. 如果要在不同的编程语言之间传递对象,就必须把对象序列 ...
- 第二十一篇 jQuery 学习3 特效效果
jQuery 学习3 这节课主要是学习jQuery的动态效果. show()和hide()显示与隐藏方法,toggle()方法,fadeIn()谈入,fadeOut()谈出,slideDown() ...
- Python之路【第二十一篇】:Django之Form组件
Django之Form组件 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1. ...
- 第二十一篇 socket
socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求 socket和file的 ...
随机推荐
- Eclipse安装Pydev插件时所遇到的问题
安装pydev插件折腾了半天,因为总是安装不成功,不成功的表现就是:windows-preferences设置里没有pydev 由于第一次安装这个插件所以不了解安装pydev插件的版本是有要求的,根据 ...
- 【题解】Luogu2915 [USACO08NOV]奶牛混合起来Mixed Up Cows
题目描述 Each of Farmer John's N (4 <= N <= 16) cows has a unique serial number S_i (1 <= S_i & ...
- 【dp】10-15题解 snake vs block
snake vs block 题目描述 Tgopknight最近迷上了一款叫做Snake vs Block的游戏,他总觉得他自己玩出的不是最优解,但是他忙于享受游戏的乐趣,只好请你帮忙找出最优解. S ...
- 基于ABP落地领域驱动设计-01.全景图
什么是领域驱动设计? 领域驱动设计(简称:DDD)是一种针对复杂需求的软件开发方法.将软件实现与不断发展的模型联系起来,专注于核心领域逻辑,而不是基础设施细节.DDD适用于复杂领域和大规模应用,而不是 ...
- DOS命令行(2)——Windows磁盘维护与管理
预备知识 1 -- 磁盘 1.磁盘分区 主磁盘分区.扩展磁盘分区.逻辑分区 主磁盘分区是物理磁盘的一部分,它像物理上独立的磁盘那样工作.对于基本启动记录(MBR)的磁盘,在一个基本磁盘上最多可以创建四 ...
- 复习Spring第一课--Spring的基本知识及使用
关于Spring: spring容器是Spring的核心,该容器负责管理spring中的java组件, ApplicationContext ctx = new ClassPathXmlApplic ...
- redis学习第二天
Redis 在 2.8.9 版本之后添加了 HyperLogLog 结构 Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常 ...
- ClickHouse学习系列之七【系统命令介绍】
背景 前面介绍了ClickHouse相关的系列文章,该系列文章包括了安装.权限管理.副本分片.配置说明等.这次介绍一些ClickHouse相关的系统命令,如重载配置文件.关闭服务和进程.停止和启动后 ...
- centos 8.3系统调优参数配置
临时设置 最大虚拟内存 [root@Sonnarqube-dev ~]# sysctl -w vm.max_map_count=262144 执行结果 vm.max_map_count = 26214 ...
- kafka、rabbitmq、redis区别,各自适合什么场景?
在应用场景方面 RabbitMQ RabbitMQ遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上,适合企业级的消息发送订阅,也是比较受到大家欢迎的. ...