Tkinter Widgets von außen steuern

Fragen zu Tkinter.
Antworten
shor
User
Beiträge: 13
Registriert: Montag 7. April 2008, 22:18

Hi!

Wie kann ich ein Tkinter Widget von "außen" steuern?

Ein Beispiel:

In einem Skript kopiere ich dateien. Wenn das Skript ausgeführt wird (ohne GUI z.B. per Aufruf auf der Kommandozeile), soll eine ProgressBar angezeigt werden, die den Fortschritt beim Kopieren anzeigt.

Die Aktion zum Kopieren soll dabei nicht in der GUI ausgelöst werden, sondern wie vorhin beschrieben durch das Ausführen des Skripts, welches die GUI anzeigt.

Progress Bars in Tkinter hab ich schon etliche ergoogelt. Mir ist nur nicht ganz klar wie ich die steuern kann. Nach dem Aufruf von "mainloop" wars das.

Muss ich dafür zwei Threads verwenden? Oder wie geht man da normalerweise vor?

Gruß,
shor
IoI
User
Beiträge: 68
Registriert: Dienstag 1. Dezember 2009, 11:39

soll beides denn ein programm sein oder zwei unabhängige?

es sollten aus jeden fall unabhängige threads sein. der "arbeitende" thread sollte mit der gui über events kommunizieren oder die gui pollt über z.b. einen timer den thread.
shor
User
Beiträge: 13
Registriert: Montag 7. April 2008, 22:18

Hallo,

Das soll ein Programm sein :) Okay - eine andereLösung wie mit den zwei threads gibt es nicht?

Danke!
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Du solltest deine GUI mit mainloop starten und zum Kopieren einen weiteren Thread. Die GUI fragt dann periodisch beim Thread nach, ob sich dessen Zustand geändert hat. Auf keinen Fall darf der Thread etwas in der GUI ändern. Das macht eigentlich kein GUI-Toolkit mit. Verwende einfach mal die Formussuche mit "Tkinter after".

Sebastian
Das Leben ist wie ein Tennisball.
Antworten