效果图:

程序一开始就开始计时,当完成了相关功能(在线程中完成)之后,就触发停止信号,停止定时器。

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.

最新文章

  1. Discuz! X论坛上传附件到100%自动取消上传的原因及解决方案
  2. 深度理解依赖注入(Dependence Injection)
  3. ArcGIS Add-in开发(一)--获取选定要素的属性值
  4. Codevs 1689 建造高塔
  5. smarty模板引擎原理解析
  6. codility上的问题 (23)Chi 2012
  7. EffectiveC#9--明白几个相等运算之间的关系
  8. oracle_根据表名拼装语句
  9. js-call、apply
  10. [leetcode-566-Reshape the Matrix]
  11. Excel 、数据库 一言不合就转换
  12. 【转贴】一次 JDBC 与 MySQL 因 “CST” 时区协商误解导致时间差了 14 或 13 小时的排错经历
  13. Lumen与laravel的区别
  14. VUE 处理文本框获焦点高亮
  15. C# 中那些常用的工具类(Utility Class)(二)
  16. [20180124]奇怪的SQL*Net message from dblink.txt
  17. CentOS7安装配置Bacular
  18. CCF 201509-3 模版生成系统
  19. PMS
  20. tx1 高温不启动问题解决办法

热门文章

  1. 终于放弃了单调的swagger-ui了,选择了这款神器—knife4j
  2. Java @FunctionalInterface注解-6
  3. 深入理解Spring事务的那点事
  4. 题解 P6622 [省选联考 2020 A/B 卷] 信号传递
  5. NOIP模拟测试24「star way to hevaen·lost my music」
  6. NOIP模拟测试6「那一天我们许下约定(背包dp)·那一天她离我而去」
  7. sql把一个字段中的特定字符替换成其他字符
  8. Docker(39)- docker 实战二之安装 Tomcat
  9. 滑动窗口经典题 leetcode 3. 无重复字符的最长子串
  10. Kubernetes之deployment