sys.exit - Problem

Fragen zu Tkinter.
Antworten
Roque
User
Beiträge: 6
Registriert: Samstag 8. August 2009, 14:49
Wohnort: München

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
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Das ist kein Fehler. Du musst die Exception nur abfangen. Steht aber auch alles in der Dokumentation zu sys.exit.
Das Leben ist wie ein Tennisball.
Roque
User
Beiträge: 6
Registriert: Samstag 8. August 2009, 14:49
Wohnort: München

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?
Byte81
User
Beiträge: 1
Registriert: Freitag 11. September 2009, 10:39

Ich würde main.destroy() zum Beenden verwenden. Gibt keinen Fehler und ist schöner.
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

sys.exit() wirft in Wirklichkeit ein SystemExit Exemplar um Python zu beenden. mainloop() scheint alle Exceptions abzufangen, und das beinhaltet nunmal auch SystemExit.
Antworten