wxPython - Schleife richtig abbilden
Hallo zusammen, ich entwickel gerade ein s.g. Debug-Tool für Zope mit einer GUI geschrieben in wxPython. Dieses soll die Abarbeitung der Request und Response Vorgänge dementsprechend abbilden. Das tool wird per Schleife den Medusa-Server "belauschen" und ein List-object regelmässig updaten. Nun zu meinem Problem: Wie nutze ich eine Schleife unter wxPython, ohne das die GUI hängt(z.B. mit einer while, größeren for-Schleife). im Prinzip müsste es etwas sein wie: schaue alle n Sekunden nach und dann tu etwas?! Danke und Gruß Axel _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
On Sat, Nov 22, 2003 at 11:49:54AM +0100, Axel Gerke wrote:
Hallo zusammen,
ich entwickel gerade ein s.g. Debug-Tool für Zope mit einer GUI geschrieben in wxPython. Dieses soll die Abarbeitung der Request und Response Vorgänge dementsprechend abbilden. Das tool wird per Schleife den Medusa-Server "belauschen" und ein List-object regelmässig updaten. Nun zu meinem Problem: Wie nutze ich eine Schleife unter wxPython, ohne das die GUI hängt(z.B. mit einer while, größeren for-Schleife). im Prinzip müsste es etwas sein wie: schaue alle n Sekunden nach und dann tu etwas?!
Hallo, Ich sehe zwei Möglichkeiten: Mit Threads oder mit select. Für beides bietet Python Bibliotheken. Mit select bekommt du heraus, ob bei einem file descriptor Daten vorhanden sind oder nicht. Wenn du alle 2 Sekunden nachschaust ob neue Daten da sind, wird die GUI nicht hängenbleiben. Unter Windows funktioniert select jedoch nur für Sockets und nicht für Dateien. Wenn es dir der Aufwand wirklich wert ist, dann würde ich Zope so anpassen, dass es auf einem zusätzlicnen TCP Port lauscht, ob sich jemand für die Debug Ausgaben interessiert. Der Debug-Client verbindet sich mit dem Port und bekommt von dort die gewünschten Informationen. Ehrlich gesagt wäre mir der Aufwand zu groß dafür eine GUI zu schreiben. Wenn ich einen Programmfehler finden will, dann schreibe ich an den entsprechenden Stellen mit "print" in das Log um der Sache auf die Spur zu kommen. Wenn ich eine Statistik möchte, würde ich ebenfalls mit print in das Log schreiben und das Log einmal täglich mit einem Script auswerten. Trotzdem viel Spaß und Erfolg, Thomas -- Thomas Guettler <guettli@thomas-guettler.de> http://www.thomas-guettler.de _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
Hi Axel,
geschrieben in wxPython.
wxPython habe ich noch nicht ausprobiert, bisher habe ich nur tkinter verwendet. Aber alle diese GUIs sind ja ähnlich aufgebaut. Bei tkinter gibt es die Funktion tk.update(), die kann man zB in der Schleife aufrufen. Evt. bremst das Dein Programm etwas aus. Man könnte auch die Schleife in kleinere Teile zerlegen und den Update dann nur ein paar mal pro Sek. aufrufen. Der Rest sie Deiner Phantasie überlassen ;-) -- Mit freundlichen Grüßen Klaus Meyer :-) _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
Am Sam, 2003-11-22 um 11.49 schrieb Axel Gerke: [...]
Nun zu meinem Problem: Wie nutze ich eine Schleife unter wxPython, ohne das die GUI hängt(z.B. mit einer while, größeren for-Schleife). im Prinzip müsste es etwas sein wie: schaue alle n Sekunden nach und dann tu etwas?!
Ich würde das in ein Thread aus lagern. Dann kannst du mit der GUI auch mehere aufwendige Aktionen starten ohne warten zu müssen bis die eine fertig ist. Olaf -- =================================================== "Meine Meinung steht fest. Bitte verwirren sie mich nicht mit Tatsachen!" Unbekannt. =================================================== _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
Olaf 'Ruebezahl' Radicke wrote:
Ich würde das in ein Thread aus lagern. Dann kannst du mit der GUI auch mehere aufwendige Aktionen starten ohne warten zu müssen bis die eine fertig ist.
Der GUI Thread wird über Events davon informiert daß sich Daten geändert haben. Der GUI Thread spring dann in die definierte Funktion und ändert die GUI Elemente. Das steht in der FAQ gut beschrieben- Gruß Daniel -- nihil me cirumdat _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
participants (5)
-
Axel Gerke -
daniel.poelzleithner -
Klaus-G. Meyer -
Olaf 'Ruebezahl' Radicke -
Thomas Guettler