Wie kann ich, wenn ich mein Programm über das Systemmenü in der Fenstertitelseite beende, d.h. wenn ich auf das Kreuzchen im Quadrat klicke (ich verwende Tkinter und Windows!), mein Programm veranlassen, dass es noch vor dem Ende eine Aktion durchführt, z.B. irgendwelche Daten abspeichert ?
Wenn ich versuche Daten hinter "tk.mainloop()" abzuspeichern, kommt eine Fehlermeldung:
"D:\Python25\lib\lib-tk\Tkinter.py", line 2962, in get
return self.tk.call(self._w, 'get', index1, index2)
TclError: invalid command name ".19197344.19197624.19182056.19182136"
Gruß
B.S.
Aktionen durchführen bei Programmende ?
-
- User
- Beiträge: 9
- Registriert: Freitag 27. September 2002, 12:34
- Kontaktdaten:
Is n'bisschen her, dass ich TKinter verwendet habe (und so was nie gemacht). gtk hat für jedes widget gleich zwei Events: delete und destroy (nach delete abgesendet). Und TKinter wirklich gar nichts, nicht einmal für Toplevels ?
Workaround: Du produzierst eine 'bewachte' Variable und änderst deren Wert nur einmal - direkt vor Programmende.
___________________
Schlechte Software ist schlimmer als keine Software
Workaround: Du produzierst eine 'bewachte' Variable und änderst deren Wert nur einmal - direkt vor Programmende.
___________________
Schlechte Software ist schlimmer als keine Software
Hi,
"WM_DELETE_WINDOW" ist dein Freund.
ein beispiel.
Gruss
pyStyler
"WM_DELETE_WINDOW" ist dein Freund.
ein beispiel.
Code: Alles auswählen
import Tkinter as tk
class App( tk.Frame ):
def __init__(self, master):
tk.Frame.__init__(self, master)
self.master = master
b = tk.Button(self, text='Quit', command=self.onQuit)
b.pack(expand=tk.YES, fill=tk.BOTH)
self.master.protocol('WM_DELETE_WINDOW', self.onQuit)
def onQuit(self):
self.master.quit()
def _main():
root = tk.Tk()
app = App( root )
app.pack(expand=tk.YES, fill=tk.BOTH)
root.mainloop()
if __name__=='__main__':
_main()
pyStyler
-
- User
- Beiträge: 9
- Registriert: Freitag 27. September 2002, 12:34
- Kontaktdaten:
Hallo pyStyler,
Danke für den Tipp.
Genau das habe ich gesucht !
Ich habe aber zwischenzeitlich bei Fredrik Lundh in
"An Introduction to Tkinter " auf http://www.pythonware.com
genau dieses 'WM_DELETE_WINDOW' gefunden.
Man muss halt mehr Geduld beim Suchen haben !
Danke trotzdem und
Gruß
B.S.
Danke für den Tipp.
Genau das habe ich gesucht !
Ich habe aber zwischenzeitlich bei Fredrik Lundh in
"An Introduction to Tkinter " auf http://www.pythonware.com
genau dieses 'WM_DELETE_WINDOW' gefunden.
Man muss halt mehr Geduld beim Suchen haben !
Danke trotzdem und
Gruß
B.S.
Ähmm, das mit der 'bewachten Variablen' oben war nix.
Übrigens hat jedes Widget ein Destroy-Event, siehe
http://infohost.nmt.edu/tcc/help/pubs/t ... types.html
___________________
Schlechte Software ist schlimmer als keine Software
Übrigens hat jedes Widget ein Destroy-Event, siehe
http://infohost.nmt.edu/tcc/help/pubs/t ... types.html
___________________
Schlechte Software ist schlimmer als keine Software