Skip to content

tkinter: The deprecated trace variable command was removed from Tk 9.0 - tkinter still uses it.  #127802

Description

@culler

Bug report

Bug description:

The file tkinter/__init__.py contains the following code:

    def trace_variable(self, mode, callback):
        """Define a trace callback for the variable.

        MODE is one of "r", "w", "u" for read, write, undefine.
        CALLBACK must be a function which is called when
        the variable is read, written or undefined.

        Return the name of the callback.

        This deprecated method wraps a deprecated Tcl method that will
        likely be removed in the future.  Use trace_add() instead.
        """
        # TODO: Add deprecation warning

    trace = trace_variable

The deprecated Tcl method was removed from Tcl 9.0, before the deprecation warning was added in tkinter. The trace_variable() and trace() methods still exist in both the current tkinter/__init__.py and the replacement which was included in PR #124112. Calling those methods with Tk 9.0 raises a TclError.

CPython versions tested on:

3.13

Operating systems tested on:

macOS

Linked PRs

Activity

  1. added
    type-bugAn unexpected behavior, bug, or error
    on Dec 10, 2024
  2. changed the title [-]tkinter: deprecated Variable.trace_variable command is removed from Tk 9.0 [/-] [+]tkinter: deprecated trace variable command was removed from Tk 9.0 - tkinter still uses it. [/+] on Dec 10, 2024
  3. changed the title [-]tkinter: deprecated trace variable command was removed from Tk 9.0 - tkinter still uses it. [/-] [+]tkinter: The deprecated trace variable command was removed from Tk 9.0 - tkinter still uses it. [/+] on Dec 10, 2024
  4. culler commented on Dec 10, 2024

    @culler
    ContributorAuthor

    The deprecated Tcl trace variable command was a short cut for trace add variable. My suggestion would be to add the deprecation warnings to the trace and trace_variable methods of the Variable class, and also make those commands call the trace_add method. That way code which uses the deprecated methods will still work.

  5. added a commit that references this issue on Jun 25, 2026
  6. serhiy-storchaka commented on Jun 25, 2026

    @serhiy-storchaka
    Member

    They will be removed in 3.17.

  7. added a commit that references this issue on Jun 25, 2026
  8. terryjreedy commented on Jun 25, 2026

    @terryjreedy
    Member

    idlelib/, turtledemo/, and turtle.py have no instances of trace_variable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions