Skip to content

Commit

Permalink
[3.13] gh-120211: Fix tkinter.ttk with Tcl/Tk 9.0 (GH-120213) (GH-120215
Browse files Browse the repository at this point in the history
)

* Use new methods for tracing Tcl variable.
* Fix Combobox.current() for empty combobox.
(cherry picked from commit d68a22e)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
  • Loading branch information
miss-islington and serhiy-storchaka committed Jun 7, 2024
1 parent a2003bd commit 8368b67
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 3 deletions.
9 changes: 6 additions & 3 deletions Lib/tkinter/ttk.py
Original file line number Diff line number Diff line change
Expand Up @@ -690,7 +690,10 @@ def current(self, newindex=None):
returns the index of the current value in the list of values
or -1 if the current value does not appear in the list."""
if newindex is None:
return self.tk.getint(self.tk.call(self._w, "current"))
res = self.tk.call(self._w, "current")
if res == '':
return -1
return self.tk.getint(res)
return self.tk.call(self._w, "current", newindex)


Expand Down Expand Up @@ -1522,15 +1525,15 @@ def __init__(self, master=None, variable=None, from_=0, to=10, **kw):
self.label.place(anchor='n' if label_side == 'top' else 's')

# update the label as scale or variable changes
self.__tracecb = self._variable.trace_variable('w', self._adjust)
self.__tracecb = self._variable.trace_add('write', self._adjust)
self.bind('<Configure>', self._adjust)
self.bind('<Map>', self._adjust)


def destroy(self):
"""Destroy this widget and possibly its associated variable."""
try:
self._variable.trace_vdelete('w', self.__tracecb)
self._variable.trace_remove('write', self.__tracecb)
except AttributeError:
pass
else:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix :mod:`tkinter.ttk` with Tcl/Tk 9.0.

0 comments on commit 8368b67

Please sign in to comment.