seit kurzen habe ich mich in pythonQt eingearbeitet ...
Nun stehe ich vor folgendem Problem:
Im Hintergrund soll etwas geladen und dann angezeigt werden.
In der Zwischenzeit soll die GUI natürlich nicht einfrieren und eventuell eine Animation,
z.b. ein gif Bild zu sehen sein.
Gehe ich richtig in der Annahme, das der optimale Weg ist,
sich eine eigene Thread Klasse zu definieren, welche von QThread erbt (http://www.mail-archive.com/pyqt@riverb ... 16052.html).
Ein Threadobjekt ein Datenfeld der GUI-Klasse zuweisen, welcher dann z.B. über ein Button gestartet wird.
Sobald der Thread fertig ist, sendet er ein selbst definiertes Signal,
welches dann eine Methode in der GUI aufruft, um alle Informationen aus dem lokal gespeicherten Threadobjekt sich zu holen und anzuzeigen.
Kurz ein wenig Code:
Code: Alles auswählen
class GetIssueDateThread(QtCore.QThread):
mytex = 'n/a'
def __init__(self, parent = None):
QtCore.QThread.__init__(self, parent)
def run(self):
# hier wird etwas gemacht was lange dauert ....
self.mytex = 42
self.emit(QtCore.SIGNAL("mySlot()"))
def __del__(self):
self.exiting = True
self.wait()
class STXCreator(QtGui.QMainWindow):
def setMyDate(self):
self.MyTextField.setText(str(self.thread.mytex))
self.BtnEnter.setEnabled(True)
def __init__(self, parent=None):
self.thread = GetIssueDateThread()
self.connect(self.thread, QtCore.SIGNAL("mySlot()"), self.setMyDate)
@QtCore.pyqtSlot()
def on_BtnEnter_clicked(self):
self.BtnEnter.setEnabled(False)
self.thread.start()