在计算过程中在PySide(或PyQt)中用QProgressBar实现QThread

问题描述 投票:0回答:1

我想知道如何实现QProgressBar,它显示了主线程中的计算进度。

请参阅以下代码。

import sys
from PySide2.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QProgressBar
from PySide2.QtCore import QThread

class BarThread(QThread):

    # Progress Bar UI Definition
    def __init__(self):
        QThread.__init__(self)
        self.window = QWidget()
        self.pgsb = QProgressBar()
        self.lay = QVBoxLayout()
        self.lay.addWidget(self.pgsb)
        self.window.setLayout(self.lay)
        self.isRun = False

    # Thread Function Definition
    def run(self):
        self.window.show()
        while self.isRun:
            self.pgsb.setValue(self.percent)
            print(self.percent)
            if self.percent == 100:
                self.isRun = False


class Tool(QWidget):

    # Main UI Definition
    def __init__(self):
        windowWidth = 300
        windowHeight = 300
        QWidget.__init__(self)
        self.setWindowTitle("Example")
        self.resize(windowWidth, windowHeight)
        self.bt = QPushButton('Numbering')
        self.layout = QVBoxLayout()
        self.layout.addWidget(self.bt)
        self.setLayout(self.layout)

    # Main Function Link Definition
        self.bt.clicked.connect(self.numbering)

    # Main Function Definition
    def numbering(self):
        bth = BarThread()
        bth.start()
        bth.isRun = True
        for x in range(0,100000):
            bth.percent = x/1000
            print(x)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    widget = Tool()
    widget.show()
    sys.exit(app.exec_())

您可以直接复制并粘贴到您的python IDE中。

((它需要PySide2。可以在提示符下与'pip install pyside2'一起安装。)>

此代码执行简单的编号,但是,这不显示编号进度。

我该如何解决这个问题?预先谢谢你。

P.S。我正在使用Windows 10和PyCharm。

我想知道如何实现QProgressBar,它显示了主线程中的计算进度。请参考以下代码。从PySide2.QtWidgets导入sys,导入QApplication,...

python qthread pyside2 qprogressbar
1个回答
0
投票

您至少有以下错误:

© www.soinside.com 2019 - 2024. All rights reserved.