c't 17/2018
S. 180
Know-how
PyQt5 ListViews
Aufmacherbild
Bild: Thorsten Hübner, Illustrator

Delegatenerschaffung

Dynamische Listen-Widgets mit PyQt5

Im Handumdrehen entstehen mit PyQt grafische Anwendungen, die auf allen Desktopbetriebssystemen laufen. Doch wenn sich die Länge von Listen mit Widgets zur Laufzeit ändern soll, sollte man auf das in Qt enthaltene Model-View-Framework zurückgreifen. Das gibt die Struktur für eine performante Implementierung vor.

Wir haben in c’t 16/2018 ein neuronales Netz trainiert, um automatisch unscharfe Urlaubsbilder zu löschen [1]. Da diese KI manchmal Fehler macht, haben wir mithilfe von PyQt5 ein grafisches Interface programmiert, das bei jedem Urlaubsbild anzeigt, ob die KI es löschen möchte oder nicht. Die Entscheidung der KI kann man mit einem Mausklick überschreiben.

Das Programm besteht aus einem Button, um einen Ordner voller Bilder zu laden, einem Vorschaufenster, um einzelne Bilder in voller Auflösung sehen zu können, und einer Liste mit Thumbnails zu jedem Bild. Diese Liste enthält alle Bilder im Ordner. Wie viele das sind, entscheidet sich erst, wenn der Benutzer mit dem Laden-Dialog einen Ordner ausgewählt hat. Daher kann man nicht einfach ein paar Thumbnail-Widgets ins Layout ziehen.