[PyQt] qthread example
IKT
noname420 at gmail.com
Sun Apr 7 20:33:48 BST 2013
Hello all,
There are some fantastic examples on the web about qthread, but none of
which seem to be working for me. :/
I have a very simple program, in fact I want it to be the most simple
qthread example on the web.
My mainfile.py:
#!/usr/bin/env python3
import sys, time
from PyQt4 import QtCore, QtGui
import copytextfromlineedit
class StartQT(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.ui = copytextfromlineedit.Ui_MainWindow()
self.ui.setupUi(self)
QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"),
self.get)
def get(self):
w = Worker()
w.start()
class Worker(QtCore.QThread):
def __init__(self, parent=None):
QtCore.QThread.__init__(self)
print("hello world")
def __del__(self):
self.wait()
def run(self):
print("run")
for value in range(1,101):
time.sleep(0.5)
print(value)
app = QtGui.QApplication(sys.argv)
myapp = StartQT()
myapp.show()
sys.exit(app.exec_())
is my main and this is my copytextfromlineedit.py
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(115, 78)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.pushButton = QtGui.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(0, 10, 113, 27))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.progressBar = QtGui.QProgressBar(self.centralwidget)
self.progressBar.setGeometry(QtCore.QRect(0, 50, 113, 23))
self.progressBar.setProperty("value", 24)
self.progressBar.setObjectName(_fromUtf8("progressBar"))
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QObject.connect(self.progressBar,
QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), self.pushButton.click)
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",
"TAKE IT", None, QtGui.QApplication.UnicodeUTF8))
I want the progress bar to update while the program is running, but I
haven't even got that far because the GUI freezes up like so:
http://ikt.id.au/blog/wp-content/uploads/2013/04/notresponding.png
I can see the thread still running and printing out numbers even after I
force close the gui, so it doesn't make sense to me.
I know this is quite a noob question, but if anyone is able to keep the gui
alive while the thread runs I would be very appreciative.
- ikt
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20130408/d646ea69/attachment.html>
More information about the PyQt
mailing list