Hallo,
ich habe ein paar Tkinter Beispiel Skripte ausprobiert und dabei festgestellt, daß es zum vollständigen Beenden nicht reicht das Fenster zu schließen: Ein Teil des Programms läuft im Hintergrund weiter und verhindert, daß ich ein anderes Skript ausführen kann.
Quellcode zB das 3. Skript hier:
http://www-alt.physik.uni-muenchen.de/k ... ode38.html
vermutlich läuft der mainloop weiter. Weiß jemand woran das liegt?
danke,
Hannes.
Programm beendet nicht automatisch
Du hast nicht zufällig das Programm aus IDLE heraus gestartet?HannesKlarner hat geschrieben:vermutlich läuft der mainloop weiter. Weiß jemand woran das liegt?
IDLE selbst ist ein Tkinter-Programm und hat eine eigene mainloop().
Falls du IDLE benutzt: Lass den Aufruf von mainloop() mal weg: Funktioniert es dann so wie möchtest?
Oder - sollte auch funktionieren - nicht nur das GUI-Programm selbst schließen, sondern auch das integrierte Konsolenfenster von IDLE.
-
- User
- Beiträge: 7
- Registriert: Montag 4. Mai 2009, 11:16
- Wohnort: Berlin
stimmt ich benutze IDLE, und wenn ich mainloop() weg lasse, kann ich durch fenster schliessen wieder die konsole benutzen. IDLE Benutzer sollten also einfach mainloop() weglassen. Ok.
noch ein, zwei kurze Fragen:
(1) Wenn ich eine Eigenschaft eines Canvas Objektes, wie create_line, nachträglich ändern möchte, wie kann ich dieses Objekt dann ansprechen? Gibt es dafür globale Variablendeklaration oder kann man den Objekten Namen geben?
(2) Kann ich eine Eigenschaft mehrerer Instanzen global ändern. ZB. die Farbe aller Linien auf einmal ändern
Danke,
Hannes.
noch ein, zwei kurze Fragen:
(1) Wenn ich eine Eigenschaft eines Canvas Objektes, wie create_line, nachträglich ändern möchte, wie kann ich dieses Objekt dann ansprechen? Gibt es dafür globale Variablendeklaration oder kann man den Objekten Namen geben?
(2) Kann ich eine Eigenschaft mehrerer Instanzen global ändern. ZB. die Farbe aller Linien auf einmal ändern
Danke,
Hannes.
HannesKlarner: Du suchst Tags: http://effbot.org/tkinterbook/canvas.ht ... specifiers
Würde ich eher nicht empfehlen, weil die Programme sonst beim Ausführen aus einer anderen IDE oder aus der Konsole o.ä. nicht "offen" bleiben, sondern sich das Fenster sofort wieder schließt, wenn das Programm einmal durchgelaufen ist.HannesKlarner hat geschrieben:stimmt ich benutze IDLE, und wenn ich mainloop() weg lasse, kann ich durch fenster schliessen wieder die konsole benutzen. IDLE Benutzer sollten also einfach mainloop() weglassen. Ok.
Normalerweise sollte das von dir beschriebene Verhalten auch nicht auftreten. Evtl. hat es damit zu tun, ob IDLE mit/ohne Subprozess gestartet wird. Dann müsste es aber helfen, wenn du die IDLE-Shell zusätzlich schließt und nicht nur die eigentliche Anwendung.
Zu deinen anderen Fragen hier drei Links zu brauchbarer Doku:
http://infohost.nmt.edu/tcc/help/pubs/tkinter/
http://effbot.org/tkinterbook/tkinter-index.htm
http://docs.python.org/library/tk.html
-
- User
- Beiträge: 7
- Registriert: Montag 4. Mai 2009, 11:16
- Wohnort: Berlin
Stimmt, wenn ich die IDLE-Shell schließe gehts auch mit mainloop().Evtl. hat es damit zu tun, ob IDLE mit/ohne Subprozess gestartet wird. Dann müsste es aber helfen, wenn du die IDLE-Shell zusätzlich schließt und nicht nur die eigentliche Anwendung.
Da ich aber alle paar Zeilen neuen Code ausprobiere, müßte ich dann dauernd Shells schließen, wenn ich mainloop() reinnehme. Deshalb erstmal ohne, solange ich das Skript noch schreibe.
Ich könnte natürlich auch einen Editor benutzen..
Danke für die Links, nach tags hab ich gesucht.