_tkinter.TclError: can't delete Tcl command

Fragen zu Tkinter.
Antworten
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

Hallo Leute

In meinem Programm erstelle ich eine StringVar mit einem Namen, füge einen trace hinzu und möchte den trace anschliessend löschen.
Allerdings kommt folgender Fehler, wenn ich es zu löschen versuche:

Code: Alles auswählen

    self.name_entry_var.trace_remove("write", "entry_name")
  File "C:\Program Files\Python310\lib\tkinter\__init__.py", line 455, in trace_remove
    self._tk.deletecommand(cbname)
_tkinter.TclError: can't delete Tcl command

Code: Alles auswählen

        self.name_entry_var = tk.StringVar(self, name="entry_name")
        self.name_entry_var.trace_add("write", self.on_update_name_text)
        self.name_entry_var.trace_remove("write", "entry_name")
Kann mir bitte jemand helfen?
Benutzeravatar
__blackjack__
User
Beiträge: 13122
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Fire Spike: "entry_name" ist ja auch falsch. Das ist der Name von dem `StringVar`-Objekt auf Tk/Tcl-Seite und nicht der Name/die ID des *callbacks*. `name` bei `tkinter.Variable` anzugeben macht eigentlich nur Sinn wenn irgendwas auf Tcl-Seite diesen Namen erwartet was nichts mit Python zu tun hat. Wenn man bei Python bleibt, reichen die automagisch generierten Namen völlig aus.

Ungetestet:

Code: Alles auswählen

        self.name_entry_var = tk.StringVar(self)
        self.trace_id = self.name_entry_var.trace_add("write", self.on_update_name_text)
        self.name_entry_var.trace_remove("write", self.trace_id)
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten