试图编写一个类来显示线程进程的进度。我需要在所有的“文件加载”操作中使用这个类;但是我很难使它成为全局的。在
在文件加载程序.py公司名称:
from PyQt5.QtCore import pyqtSlot, pyqtSignal
from PyQt5.QtWidgets import QDialog
from PyQt5.uic import loadUi
class FileLoader(QDialog):
completeSig = pyqtSignal()
def __init__(self, parent=None):
super(FileLoader, self).__init__(parent)
self.filename = ""
self.clientcode = ""
self.thread = ""
loadUi("GlobalUI/fileloader.ui", self)
self.prgLoader.setValue(0)
@pyqtSlot()
def on_btnCancel_clicked(self):
self.close()
def closeEvent(self, e):
self.thread.stop()
def loadData(self):
self.thread.totalSig.connect(self.prgLoader.setMaximum)
self.thread.countSig.connect(self.prgLoader.setValue)
self.thread.finished.connect(self.completed)
self.thread.start()
def completed(self):
self.completeSig.emit()
self.close()
在加载程序.py在
^{pr2}$我正在从另一个模块调用PatDataLoader.load("test","test.txt")
。我遇到的问题是应用程序因QThread: Destroyed while thread is still running
而崩溃,因为我传递给fileloader的线程进程似乎有问题。我是不是把这些东西都拼好了?在
在主.py公司名称:
from lmdb.patloader import PatDataLoader
class PPSReportsApp(QMainWindow):
def __init__(self, *args):
super(PPSReportsApp, self).__init__(*args)
loadUi("GlobalUI/ppsreportswindow.ui", self)
#self.showMaximized()
@pyqtSlot()
def on_actionTest_triggered(self):
pl = PatDataLoader()
pl.load("TEST","testfile.txt")
在您的代码中,
pl
是一个局部变量,因此当它执行完on_actionTest_triggered
时,它将被删除,这可能是产生该问题的瞬间。另一方面,no-load应该是静态方法,因为它不使用self。自线程必须是None
,它比""
好如何防止
pl
在完成处理之前被删除?fl
是一个QDialog
,因此您可以使用exec_()
。在文件加载程序.py
加载程序.py
^{pr2}$主.py
相关问题 更多 >
编程相关推荐