Sequenz von Bildern in einer PyQt4-GUI anzeigen

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
ichbinsisyphos
User
Beiträge: 120
Registriert: Montag 4. Juni 2007, 19:19

Montag 20. April 2009, 00:23

Ich würde mir gern schön langsam ein Programm basteln, mit dem ich animierte GIFs erstellen kann, dazu möchte ich die gegenwärtige Auswahl an Einzelbildern direkt in der GUI darstellen.

Codeschnippsel:

Code: Alles auswählen

	def play(self):
		wait = self.wait_box.value()/1000.
		for filename in self.new_filenames:
			print filename
			picture = QtGui.QPixmap(filename)
			self.display_area.setPixmap(picture)
			time.sleep(wait)
display_area ist ein QLabel, wait_box ist eine QSpinBox, in der ich die Zeit zwischen zwei frames angebe.

Das Problem hier im Moment ist, dass die Bilder nicht aktualisiert werden, er geht brav die Liste durch, die Ausgabe der filenames stimmt, aber angezeigt wird jeweils nur das letzte Bild der Sequenz.

Wo liegt das Problem?
jerch
User
Beiträge: 1630
Registriert: Mittwoch 4. März 2009, 14:19

Montag 20. April 2009, 01:22

Das Problem ist, daß Deine Methode bis zum letzten Bild wartet und der Gui-Loop zwischenzeitlich nicht zum Zuge kommt. (Dir Gui friert für die Dauer Deiner Methode komplett ein.)

Lösung:
Mit QTimer den Bildwechsel triggern.
ichbinsisyphos
User
Beiträge: 120
Registriert: Montag 4. Juni 2007, 19:19

Montag 20. April 2009, 02:00

Ja, ich hatte schon so eine Vermutung. Ich werd mir diese QTimer Class mal ansehen.

Danke.
Antworten