python 杀死线程_如何杀死正在运行的线程

本文探讨了在使用PyQt5库创建的GUI应用中,如何在对话框中通过按钮中断正在执行的线程。作者提供了一个包含LoaderProgress类的示例,该类具有启动和更新进度条的功能,以及一个killthread方法,但目前并未实现真正终止线程。问题在于当点击'Cancel'按钮时,如何停止FileLoader线程的运行。寻求社区的帮助以解决这一问题。
摘要由CSDN通过智能技术生成

我有一个对话框,显示正在运行的线程的进度:from PyQt5.QtWidgets import *

from PyQt5.uic import loadUi

from PyQt5.QtCore import *

class LoaderProgress(QDialog):

def __init__(self, parent=None):

super(LoaderProgress, self).__init__(parent)

loadUi("CliReportsUI/loaderprogress.ui", self)

self.pbLoader.setValue(0)

self.btn_cancel.clicked.connect(self.killthread)

def watchthread(self,worker):

self.thread = worker(self)

self.thread.totsignal.connect(self.pbLoader.setMaximum)

self.thread.cntsignal.connect(self.updateprogress)

self.thread.finished.connect(self.close)

def settitle(self,title):

self.setWindowTitle(title)

def startthread(self):

self.thread.start()

def updateprogress(self,n):

self.pbLoader.setValue(n)

def killthread(self):

print('How do I do this')

另一个类中的方法按以下方式运行线程:

^{pr2}$

还有工人阶级:class FileLoader(QThread):

totsignal = pyqtSignal(int)

cntsignal = pyqtSignal(int)

def __init__(self,parent=None):

super(FileLoader, self).__init__(parent)

self.threadactive = True

self.total = 100

def run(self):

self.totsignal.emit(self.total)

i = 1

while(i < self.total and self.threadactive):

print(time.time)

if(time.time() % 1==0):

i+=1

self.cntsignal.emit(i)

在加载程序对话框中,我有一个按钮可以取消进程(btn_cancel),但是如果单击cancel按钮,我不知道如何终止正在运行的线程。谢谢你的帮助。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值