_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: 14416
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)
“The city's central computer told you? R2D2, you know better than to trust a strange computer!” — C3PO
Antworten