Programmieren einer interaktive Listenansicht mit PyQt5

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
JohannesS
User
Beiträge: 6
Registriert: Dienstag 3. September 2019, 19:55

Hallo Liebe Python Community,
ich möchte meine erste GUI mit PyQt5 programmieren (habe bisher nur Erfahrungen mit Delphi) und finde keinen richtigen Ansatz für folgende Aufgabe:
Programmieren einer Listenansicht die pro Item den Fortschritt und das Ergebnis eines Worker-Threads anzeigt.
Da die gewünschte Anzeige der einer „Downloads“ Liste in einen Browser sehr ähnelt, möchte ich zur Veranschaulichung eine hier als Beispiel benutzen:
Bild

Natürlich entsprechen hier die Widgets eines Items in der Liste nicht exakt denen die ich schlussendlich benötigen werde. Aber das tut nichts zur Sache, weil die zu implementierende „interaktive Listenansicht“ unabhängig von den konkret verwendeten Anzeige und Bedienelementen sein soll. Dazu stelle ich mir die Implementation einer Basisklasse vor, die als einzige Eigenschaft ein ItemHeight hat und damit das Item als leeren Platzhalter darstellt. Abgeleitete Klassen überschreiben dieses leere Item mit einem eigenen Item-Widget, das auf dem konkreten Anwendungsfall zugeschnittenem ist. Dieses Item-Widget ist ein Container für die verwendeten Widgets pro Item. Im Fall des Browsers sind das
- Ein Applikations-Icon das die dem Dateityp zugeordnete Anwendung symbolisiert.
- Ein Label für den Dateinamen
- Ein Label für zugehörige (Status-) Informationen
- Mehreren Schaltfläche, von denen nur die dargestellt werden, die zum jeweiligen Status passen.

1. Frage: Gibt es so etwas bereits frei verfügbar? Ich möchte ungern das Rad nochmal erfinden.
Falls Nein - Hier mein bisheriger Lösungsansatz mit weiteren Fragen:

Ich habe mir das Online-Buch von Martin Fitzpatrick gekauft und dort gibt es ein Tutorial zum Thema The „ModelView Architecture“

https://www.learnpyqt.com/courses/model ... hitecture/

Den entnehme ich, das ein QListView ein ViewController implementiert. Für mich sieht es so aus, als wäre dieser ViewController im wesentlichen fest auf Anzeige-Text, Icon und Check-Status festgelegt.
2. Frage: Kann ein QListView-Item auf die von mir gewünschte Weise erweitert werden? Wenn ja, wie?
Wenn Nein, dann wäre mein nächster Gedanke ein QScrollArea als Container zu verwenden, Dann müsste ich den ViewController selbst schreiben.
3. Frage: gibt es eine Literaturstelle die das Implementieren eines eigenen ViewControllers beschreibt?

Sollte dieses Hobby-Projekt zu einen verwertbaren Ergebnis führen, könnte ich mir vorstellen dieses frei verfügbar zu machen. Eigentlich müsste es dafür ein Bedarf geben, es sei denn die Antwort auf die 1. Frage ist Ja.
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Die Lösung liegt wohl in der Verwendung eines Delegate. Wie zb hier beschrieben: https://doc.qt.io/qt-5/qabstractitemdelegate.html
Antworten