Last active
November 12, 2022 10:10
-
-
Save kaotika/e8ca5c340ec94f599fb2 to your computer and use it in GitHub Desktop.
Simple PyQt example with QThread and QProgressBar
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from PyQt4 import QtCore, QtGui | |
import sys, time | |
class mythread(QtCore.QThread): | |
total = QtCore.pyqtSignal(object) | |
update = QtCore.pyqtSignal() | |
def __init__(self, parent, n): | |
super(mythread, self).__init__(parent) | |
self.n = n | |
def run(self): | |
self.total.emit(self.n) | |
i = 0 | |
while (i<self.n): | |
if (time.time() % 1==0): | |
i+=1 | |
#print str(i) | |
self.update.emit() | |
# create the dialog for zoom to point | |
class progress(QtGui.QProgressBar): | |
def __init__(self, parent=None): | |
super(progress, self).__init__(parent) | |
# Set up the user interface from Designer. | |
self.setValue(0) | |
self.thread = mythread(self, 3) | |
self.thread.total.connect(self.setMaximum) | |
self.thread.update.connect(self.update) | |
self.thread.finished.connect(self.close) | |
self.n = 0 | |
self.thread.start() | |
def update(self): | |
self.n += 1 | |
print self.n | |
self.setValue(self.n) | |
if __name__=="__main__": | |
app = QtGui.QApplication([]) | |
progressWidget = progress() | |
progressWidget.move(300, 300) | |
progressWidget.show() | |
sys.exit(app.exec_()) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thank you for sharing... I was searching for a couple of days about how can I update the QThread value from the main window like the QWindow application. Your sample code helps me alot.
Unluckily, there is no good documentation for QThread applications , shared memory etc side