PyQt5螺纹

2024-09-29 21:27:39 发布

您现在位置:Python中文网/ 问答频道 /正文

试图编写一个类来显示线程进程的进度。我需要在所有的“文件加载”操作中使用这个类;但是我很难使它成为全局的。在

在文件加载程序.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")

Tags: frompyimportself进程initdefconnect
1条回答
网友
1楼 · 发布于 2024-09-29 21:27:39

在您的代码中,pl是一个局部变量,因此当它执行完on_actionTest_triggered时,它将被删除,这可能是产生该问题的瞬间。另一方面,no-load应该是静态方法,因为它不使用self。自线程必须是None,它比""

如何防止pl在完成处理之前被删除?

fl是一个QDialog,因此您可以使用exec_()。在

文件加载程序.py

class FileLoader(QDialog):
    completeSig = pyqtSignal()

    def __init__(self, parent=None):
        super(FileLoader, self).__init__(parent)
        self.filename = ""
        self.clientcode = ""
        self.thread = None
        loadUi("GlobalUI/fileloader.ui", self)
        self.prgLoader.setValue(0)

    @pyqtSlot()
    def on_btnCancel_clicked(self):
        self.close()

    def closeEvent(self, e):
        if self.thread:
            self.thread.stop()

    def loadData(self):
        if self.thread:
            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}$

主.py

@pyqtSlot()
def on_actionTest_triggered(self):
    PatDataLoader.load("TEST","testfile.txt")

相关问题 更多 >

    热门问题