Alternative zu update_idletasks?
Verfasst: Donnerstag 21. April 2005, 00:00
Hallo,
ich habe folgendes Problem: Ich habe mir in Python und Tkinter ein Bildverwaltungsprogramm erstellt. Das sieht in etwa so aus: ich kann verschiedene Suchbegriffe eingeben und erhalte dann eine Anzeige der Bilder in Form von Thumbnails in einem Canvas. Da ich im Moment ca. 20.000 Bilder verwalte, kann es vorkommen, dass eine Suche mit vielen Treffern schon mal etwas dauert (Zugriff auf Datenbank, zusammensuchen der Thumbnails etc.). Deshalb habe ich in einem zweiten "Minicanvas" einen Fortschrittbalken implementiert, der auch hervorragend funktioniert. Aber: diese Funktion verlängert die Bearbeitung einer Suchanfrage um den Faktor 2.5. Beispiel: Anzahl Treffer ca. 500 mit Fortschrittsbalken: 45 sek. Ohne Fortschrittsbalken: 19 sek. Das kommt daher, weil ich den Fortschrittbalken (den ich sowieso bald ausbauen muss, wenn Microsoft mit seinem Patentantrag darauf Erfolg hat ) mit update_idletasks aktualisiere. Das führt dazu, dass auch der "Haupt-Canvas" mit den ganzen Thumbnails sich während der Suchanfrage aktualisiert und Tkinter ständig die Positionen etc. neu berechnen muss. Daher die Frage, ob es eine andere Möglichkeit gibt, in der GUI nur einen Teilbereich (in diesem Fall nur den "Minicanvas") zu aktualisieren. update_idletasks macht lt. Dokumentation folgendes: "Call pending idle tasks" und führt daher zu meinem Problem. Vielen Dank schon mal für Antworten und Anregungen.
Gruß
Hans
ich habe folgendes Problem: Ich habe mir in Python und Tkinter ein Bildverwaltungsprogramm erstellt. Das sieht in etwa so aus: ich kann verschiedene Suchbegriffe eingeben und erhalte dann eine Anzeige der Bilder in Form von Thumbnails in einem Canvas. Da ich im Moment ca. 20.000 Bilder verwalte, kann es vorkommen, dass eine Suche mit vielen Treffern schon mal etwas dauert (Zugriff auf Datenbank, zusammensuchen der Thumbnails etc.). Deshalb habe ich in einem zweiten "Minicanvas" einen Fortschrittbalken implementiert, der auch hervorragend funktioniert. Aber: diese Funktion verlängert die Bearbeitung einer Suchanfrage um den Faktor 2.5. Beispiel: Anzahl Treffer ca. 500 mit Fortschrittsbalken: 45 sek. Ohne Fortschrittsbalken: 19 sek. Das kommt daher, weil ich den Fortschrittbalken (den ich sowieso bald ausbauen muss, wenn Microsoft mit seinem Patentantrag darauf Erfolg hat ) mit update_idletasks aktualisiere. Das führt dazu, dass auch der "Haupt-Canvas" mit den ganzen Thumbnails sich während der Suchanfrage aktualisiert und Tkinter ständig die Positionen etc. neu berechnen muss. Daher die Frage, ob es eine andere Möglichkeit gibt, in der GUI nur einen Teilbereich (in diesem Fall nur den "Minicanvas") zu aktualisieren. update_idletasks macht lt. Dokumentation folgendes: "Call pending idle tasks" und führt daher zu meinem Problem. Vielen Dank schon mal für Antworten und Anregungen.
Gruß
Hans