Seite 1 von 1

_tkinter.TclError: can't delete Tcl command

Verfasst: Samstag 3. September 2022, 15:50
von Fire Spike
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?

Re: _tkinter.TclError: can't delete Tcl command

Verfasst: Samstag 3. September 2022, 17:05
von __blackjack__
@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)