Seite 1 von 1

sys.exit - Problem

Verfasst: Dienstag 8. September 2009, 14:23
von Roque
Hi there,

ich habe neulich auf Python 3.11 aktualisiert und seitdem einen ärgerlichen Fehler mit dem sys.exit - Befehl. Hier mal ein ganz simples Beispiel:

Code: Alles auswählen

import sys, tkinter

def ende():
    sys.exit(0)

main = tkinter.Tk()

#Hauptfenster-Button
hpButton = tkinter.Button(main, text = "Ende", command = ende)
hpButton.pack()

main.mainloop()
Das ist die Fehlermeldung dazu:

Traceback (most recent call last):
File "...", line 14, in <module>
main.mainloop()
File "C:\...\lib\tkinter\__init__.py", line 1009, in mainloop
self.tk.mainloop(n)
File "C:\...\lib\tkinter\__init__.py", line 1401, in __call__
raise SystemExit(msg)

Was hat sich hier geändert bzw. kennt einer von Euch eine Lösung für dieses Problem?

Danke!
Johannes

Verfasst: Dienstag 8. September 2009, 14:36
von EyDu
Das ist kein Fehler. Du musst die Exception nur abfangen. Steht aber auch alles in der Dokumentation zu sys.exit.

Verfasst: Dienstag 8. September 2009, 17:01
von Roque
Hi,

Danke für Deine Antwort. Wie man exceptions baut weiß ich, aber könntest Du mir vielleicht einen Tipp geben, wie man diese richtig implementiert?

Verfasst: Freitag 11. September 2009, 10:42
von Byte81
Ich würde main.destroy() zum Beenden verwenden. Gibt keinen Fehler und ist schöner.

Verfasst: Dienstag 15. September 2009, 02:23
von str1442
sys.exit() wirft in Wirklichkeit ein SystemExit Exemplar um Python zu beenden. mainloop() scheint alle Exceptions abzufangen, und das beinhaltet nunmal auch SystemExit.