I am quite new to Python and Qt and need very urgently advice on how to update Qt progressBar while executing a process. I have went thrugh number of 'google' stuff and saw different solution, hence none worked for me. The best idea I have seen is the usage of QThread and emiting signal from thread to MainWindow. I do not know however why the code I have written is not working. Most likely a stupid 'beginner related' error but as far as I am beginner I can't get it. There is a code below:
#!/opt/local/bin/python2.6 import os import sys import time from PyQt4 import QtCore from PyQt4 import QtGui from uiTest import Ui_MainWindow class MainWindow(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) self.ui=Ui_MainWindow() self.ui.setupUi(self) self.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), self.runWorker) def runWorker(self): self.worker = Worker() self.connect(self.worker, QtCore.SIGNAL("progressUpdated"), self.updateWorkerProgress) self.worker.start() def updateWorkerProgress(self, min, max, progress): self.ui.progressBar.setMinimum = min self.ui.progressBar.setMaximum = max self.ui.progressBar.setValue = progress self.ui.progressBar.repaint() #print min, progress, max class Worker(QtCore.QThread): __pyqtSignals__ = ("progressUpdated") def __init__(self): QtCore.QThread.__init__(self) self.min = 0 self.max = 1000 self.progress = 0 def run(self): for self.progress in range(self.min, self.max): self.emit(QtCore.SIGNAL("progressUpdated"), self.min, self.max, self.progress) time.sleep(0.005) def main(): app = QtGui.QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) if __name__ == "__main__": main() the uiTest is generated by pyuic4 and for reference can be found below: # Form implementation generated from reading ui file 'test.ui' # # Created: Sun May 16 19:54:59 2010 # by: PyQt4 UI code generator 4.7.2 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(640, 480) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.pushButton = QtGui.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(40, 40, 113, 32)) self.pushButton.setObjectName("pushButton") self.progressBar = QtGui.QProgressBar(self.centralwidget) self.progressBar.setGeometry(QtCore.QRect(50, 80, 431, 23)) self.progressBar.setProperty("value", 24) self.progressBar.setObjectName("progressBar") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 640, 22)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "PushButton", None, QtGui.QApplication.UnicodeUTF8)) -- http://mail.python.org/mailman/listinfo/python-list