pyqt5如何使用movetothread更新弹出进度条?

pxy2qtax  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(261)

我想更新弹出的进度条。
我指的是当在pyqt中使用movetothread、后台线程和qthread时,如何正确退出pyqt5中的qthread
在主窗口中,当我单击一个按钮时,程序将执行一些工作,子窗口(progressbar)将显示。我认为,线程启动时,线程向子窗口(progressbar)发送一个信号。但是在子窗口显示之后,程序就死了。我用朱庇特笔记本。
这是我的密码。

class MainWindow(QMainWindow, FORM):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.button_num.clicked.connect(self.save_num)

    def save_num(self):
        s = SubWindow(5)
        save_thread = QThread()
        save_obj = save_object()
        save_obj.moveToThread(save_thread)
        save_obj.progress_signal.connect(s.progress_value)
        save_obj.finished.connect(save_thread.quit)
        save_thread.started.connect(save_obj.save_num)
        save_thread.start()

class SubWindow(QWidget):

    def __init__(self, val):
        super().__init__()
        self.progress = QProgressBar()
        self.progress.setMinimum(0)
        self.progress.setMaximum(val)
        self.layout = QVBoxLayout()
        self.layout.addWidget(self.progress)
        self.setLayout(self.layout)
        self.show()

    @pyqtSlot(int)
    def progress_value(self, val):
        self.progress.setValue(val)

class save_object(QObject):

    progress_signal = pyqtSignal(int)
    finished = pyqtSignal()

    def save_num(self):
        count = 0
        while count < 5:
            time.sleep(1)
            print(count)
            count += 1
            self.progress_signal.emit(count)
        self.finished.emit()

这条路对吗?
有什么问题?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题