1

コードの残りの部分とは別のスレッドでプログレス バーを実行したいのですが、プログレス バーがメイン スレッドからどのように更新されるかを制御したいと考えています。

これは可能なものですか?

これは私がこれまでに持っているものです:

import time
from PySide import QtGui
from PySide import QtCore
from PySide import QtUiTools

class progressBar(QtGui.QDialog, QtCore.QThread):

    def __init__(self, window, title=None):
        super(progressBar, self).__init__(window)
        QtCore.QThread.__init__(self)

        self.title = title or 'Progress'
        self.setupUi()
        self.show()

    def setupUi(self):
        self.setObjectName("Thinking")
        self.gridLayout = QtGui.QGridLayout(self)
        self.gridLayout.setObjectName("gridLayout")
        self.progressBar = QtGui.QProgressBar(self)
        self.gridLayout.addWidget(self.progressBar, 0, 0, 1, 1)

        # ADJUSTMENTS
        self.setMaximumSize(280, 50)
        self.setMinimumSize(280, 50)
        self.setWindowTitle(self.title)


    def increase(self, inc):
        self.progressBar.setProperty("value", inc)
        time.sleep(0.01)

    def run(self):
        for i in range(1,101):
            self.increase(i)



progressThread = progressBar(QtGui.QApplication.activeWindow())
progressThread.start()

これは、スレッド内で進行状況バーを正しく実行しているように見えますが、run 関数によって完全に制御されています。

run 関数を削除して、このコードをメイン スレッドに追加しようとしました。

progressThread = progressBar(QtGui.QApplication.activeWindow())
progressThread.start()

for i in range(1,101):
    progressThread.increase(i)

しかし、これはうまくいかなかったようです。

これについての助けは素晴らしいでしょう...ありがとう

4

1 に答える 1