Ich versuche gerade ein C++ Programm aus einem mit Tkinter erstellten GUI aufzurufen. Ausserdem hätte ich gerne, dass mein GUI mir Bescheid sagt, ob das Programm noch läuft oder nicht. Allerdings funktioniert das nicht so, wie ich mir das vorstelle.
Zunächst einige Programmschnipsel:
Code: Alles auswählen
[...]
def create_widgets(self):
[...]
self.RUN_button["command"] = self.RUN_PROGRAMM
[...]
self.RUN_PROGRAMM_now_status_var=StringVar()
self.RUN_PROGRAMM_now_status = Label (root, textvariable=self.RUN_PROGRAMM_now_status_var)
self.RUN_PROGRAMM_now_status.configure(fg="blue")
self.RUN_PROGRAMM_now_status_var.set("Status")
[...]
self.master.after(1000, self.check_status)
[...]
def RUN_PROGRAMM(self):
self.RUNNING_PROGRAMM=popen2.Popen3(PROGRAMM)
self.programm_laeuft=1
def check_status(self):
if self.programm_laeuft==1:
self.RUN_PROGRAMM_now_status.configure(fg="red")
if self.RUNNING_PROGRAMM:
print self.RUNNING_PROGRAMM.poll()
if self.RUNNING_PROGRAMM.poll()!=-1:
self.programm_laeuft=0
else:
self.RUN_PROGRAMM_now_status.configure(fg="green")
self.master.after(1000, self.check_status)
[...]
Das funktioniert auch alles soweit. Nur das das externe Programm nix tut! Es wird gestartet und läuft dann mit 0% CPU im Sleep-Modus vor sich hin.
An dem externen Programm und den übermittelten Parametern liegts nicht. Wenn ich die check_status Funktion deaktiviere, läuft das externe Programm mit 99% CPU...
Achja, ich arbeite mit Mandrake Linux 9.1; Python 2.2.2.
Ok, Problem ausreichend beschrieben?! Ich wäre dankbar für eine Erklärung, wieso das nicht funktioniert, bzw. wie macht mans "richtig"?
Besten Dank!
Philipp