コードの残りの部分とは別のスレッドでプログレス バーを実行したいのですが、プログレス バーがメイン スレッドからどのように更新されるかを制御したいと考えています。
これは可能なものですか?
これは私がこれまでに持っているものです:
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)
しかし、これはうまくいかなかったようです。
これについての助けは素晴らしいでしょう...ありがとう