Funktion erst nach UI Start aufrufen

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
solar22
User
Beiträge: 27
Registriert: Donnerstag 14. Oktober 2010, 20:31

Hallo!
Ich hab eine Funktion loadTableItems() welche über 1000 Datensätze in ein QTableWidget einspielt.
Das Problem ist nur, das dies den Programmstart verlangsamt.
Ist es möglich die Funktion erst nachdem die GUI gestartet ist aufzurufen?

Code: Alles auswählen

app = QtGui.QApplication(sys.argv)        
dialog = MeinDialog() 
dialog.show()
dialog.loadTableItems()
Das hab ich schon probiert und es führt leider nicht zum gewünschten Effekt.

Gruß.
solar22
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Evtl. könntest Du das Laden in einen separaten Thread auslagern? Dazu gibt es einige Artikel in der Qt-Doku (also nicht die Python eigenen Thread-Module nutzen!).
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
lunar

@solar22: Außerdem ist es bei derartig großen Datensätzen unter Umständen ratsam, eine eigene Model-Klasse zu implementieren. So musst Du nicht den gesamten Datenbestand auf einmal holen, sondern nur diejenigen Teile, welche in der Anzeige gerade dargestellt werden.

Genaueres kann man ohne Hintergrundinformationen allerdings nicht sagen.
solar22
User
Beiträge: 27
Registriert: Donnerstag 14. Oktober 2010, 20:31

@lunar:
Die Tabelle enthält immer alle Datensätze.
Bildschormgrößen bedingt sind immer ca. 30 zu sehen.
Meinst du das die anderen beim scrollen erst geladen werden sollten?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

solar22 hat geschrieben:@lunar:
Meinst du das die anderen beim scrollen erst geladen werden sollten?
Genau das. Das "SqlQueryModel" handhabt das z.B. so. http://doc.qt.nokia.com/4.6/qsqlquerymodel.html
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten