pythonpyqt5线程暂停重启时间_PyQT5 停止死循环线程(监控文件是否修改)
说明
在软件使用中,大多数需要使用多线程来实现,并且需要线程长久执行,所以就需要用到死循环,哪如何停止该死循环线程呢?
监控文件是否修改
主界面代码import sys
import os
from PyQt5.QtWidgets import (QWidget,QApplication, QTextEdit, QPushButton, QBoxLayout)
from PyQt5.QtCore import (QThread, pyqtSignal)
class Window(QWidget):
def __init__(self, parent=None, *args, **kwargs):
super().__init__(parent, *args, **kwargs)
self.initUI()
def initUI(self):
self.setWindowTitle('停止多线程死循环')
self.resize(550, 450)
# 创建多行文本框
qtext_edit = QTextEdit()
qtext_edit.resize(530, 430)
qtext_edit.setObjectName("edit")
# 创建三个按钮
pushButton = QPushButton()
pushButton.setText("导入文件")
pushButton.clicked.connect(self.open_file) # 导入文件
qpush_button_start = QPushButton()
qpush_button_start.setText("开始监控")
qpush_button_start.clicked.connect(self.start_monitor) # 连接开始监控槽函数
qpush_button_stop = QPushButton()
qpush_button_stop.setText("停止监控")
qpush_button_stop.clicked.connect(self.stop_monitor) # 连接停止监控槽函数
# 添加到垂直布局 到 父控件
v_layout = QBoxLayout(QBoxLayout.TopToBottom)
self.setLayout(v_layout)
# 添加水平布局控件
lrlayout = QBoxLayout(QBoxLayout.LeftToRight)
lrlayout.addWidget(pushButton)
lrlayout.addWidget(qpush_button_start)
lrlayout.addWidget(qpush_button_stop)
v_layout.addWidget(qtext_edit)
v_layout.addLayout(lrlayout)
def open_file(self):
print("导入文件")
# 开始监控
def start_monitor(self):
print("点击开始")
# 停止监控
def stop_monitor(self):
print("点击停止")
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
监控文件是否更新线程监控文件需要开启一个线程,不然主界面就会出现假死
class Thread(QThread):
# 自定义修改时间信号
file_time = pyqtSignal(float)
def __init__(self, path: str ,parent=None):
super().__init__(parent)
# 文件路径
self.path = path
# 死循环状态
self.status = True
# 默认文件最后修改时间
self.endTime = 0.0
def __del__(self):
self.wait()
def run(self) -> None:
while self.status:
# 判断文件修改时间
if self.endTime != os.path.getmtime(self.path):
self.endTime = os.path.getmtime(self.path)
# 发送文件修改信号
self.file_time.emit(self.endTime)
self.sleep(1)
导入文件 & 更新文本框内容def open_file(self):
print("导入文件")
# 选择文件
self.file_Name_Type = QFileDialog.getOpenFileName(self, "选取文件")
if self.file_Name_Type == "":
print("\n取消选择")
return
self.qtext_edit.append(f"导入文件路径 {self.file_Name_Type[0]}")
# 添加文本框内容
def set_text(self,text: str):
self.qtext_edit.append(f"文件最后修改时间 {text}")
开始 & 停止监控事件点击开始监控 开启监控线程,点击停止监控,修改死循环条件
# 开始监控
def start_monitor(self):
self.thread = Thread(self.file_Name_Type[0])
# 接收文件修改时间信号
self.thread.file_time.connect(self.set_text)
self.thread.start()
# 停止监控
def stop_monitor(self):
self.thread.status = False
效果
pythonpyqt5线程暂停重启时间_PyQT5 停止死循环线程(监控文件是否修改)相关推荐
- 潇洒郎: python threading 实现线程暂停、恢复、停止功能
结果: 线程暂停.恢复.停止见注释 obj-T1-0obj-T2-0main 0obj-T1-1obj-T2-1obj-T2-2main 1obj-T1-2obj-T1-3obj-T2-3main 2 ...
- python pyqt5 线程 暂停 重启_PyQt5 线程阻塞?
读取串口数据实时显示到textbrower,但会线程阻塞,求大神指教 # -*- coding: utf-8 -*- # Form implementation generated from read ...
- python pyqt5 线程 暂停 重启_如何在PyQT5中暂停/播放线程?
我正在用PyQT5制作一个简单的GUI程序.在 但现在我遇到了一些关于线的问题.在 我只做了一个简单的测试程序,比如bottom: 该程序只是试图将数字附加到textbox,但它崩溃了.在 我不知道为 ...
- 面试官问:线程池是如何重复利用空闲的线程来执行任务的?
欢迎关注方志朋的博客,回复"666"获面试宝典 在Java开发中,经常需要创建线程去执行一些任务,实现起来也非常方便,但如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任 ...
- 线程池是如何重复利用空闲的线程来执行任务的?
来源:blog.csdn.net/anhenzhufeng/article/details/88870374 在Java开发中,经常需要创建线程去执行一些任务,实现起来也非常方便,但如果并发的线程数量 ...
- Qt实用技巧:使用OpenCV库的视频播放器(支持播放器操作,如暂停、恢复、停止、时间、进度条拽托等...
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 需求 使用OpenCV库的视频播放器(支持播放器操作,如暂停.恢复 ...
- java线程怎么重启_如何在Java中启动/停止/重启线程?
10 个答案: 答案 0 :(得分:41) 一旦线程停止,您就无法重新启动它.但是,没有什么可以阻止您创建和启动新线程. 选项1:创建一个新线程,而不是尝试重新启动. 选项2:而不是让线程停止,让它等 ...
- 【Java 语言】Java 多线程 一 ( 线程基础 : 线程启动 | 线程停止 | 线程暂停 | 线程优先级 | 守护线程)
一. 线程启动 线程启动 : -- 1. 继承 Thread 运行线程 : 重写 Thread 类的 run 方法, 然后执行该线程; -- 2. 实现 Runnable 接口, 并运行线程; -- ...
- python线程暂停_关于多线程:如何使“停止”按钮终止已经在Tkinter中运行的“开始”功能(Python)...
我正在使用带有两个主要按钮的Tkinter制作GUI:"开始"和"停止". 您能否为以下代码提供建议,以使"停止"按钮终止由"开始 ...
最新文章
- VMware vSphere
- android flash闪退,Android全面停止Flash Adobe专注HTML5
- spring 事务说明
- python时间序列预测不连续怎么办_python – 不连续的时间序列在x轴上绘制日期
- java.io.StreamCorruptedException: invalid stream header: 00000000
- 【java笔记】Set接口 (HashSet集合,LinkedSet集合)
- 2013蓝桥杯C++A:颠倒的价牌(stringstream用法)
- 阿里云linux上安装,卸载mysql与重新安装配置Mysql
- 和计算机与设计相关的,计算机设计和类论文参考文献 计算机设计和参考文献有哪些...
- 51单片机教室人数进出统计检测LCD1602管显示装置红外传感器
- 中国第一政经博客 数学
- 为civil3D2018 添加snoop DB工具
- python世界杯问题
- 微信小程序开发工具报错对应的服务器证书无效
- 鸿海精密收购东芝闪存业务志在必得 或出价270亿美元
- 【ChatGPT调教】调教ChatGPT案例
- 可以进行论文降重吗?
- USACO-Section 1.2 Daul Palindromes[...]
- 如何截取视频片段 批量截取片段的方法
- caffe与卷积神经网络