aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/tkinter/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/tkinter/__init__.py')
-rw-r--r--Lib/tkinter/__init__.py26
1 files changed, 15 insertions, 11 deletions
diff --git a/Lib/tkinter/__init__.py b/Lib/tkinter/__init__.py
index e0db41dd915..a1567d332ae 100644
--- a/Lib/tkinter/__init__.py
+++ b/Lib/tkinter/__init__.py
@@ -1537,16 +1537,19 @@ class Misc:
Otherwise destroy the current binding for SEQUENCE, leaving SEQUENCE
unbound.
"""
+ self._unbind(('bind', self._w, sequence), funcid)
+
+ def _unbind(self, what, funcid=None):
if funcid is None:
- self.tk.call('bind', self._w, sequence, '')
+ self.tk.call(*what, '')
else:
- lines = self.tk.call('bind', self._w, sequence).split('\n')
+ lines = self.tk.call(what).split('\n')
prefix = f'if {{"[{funcid} '
keep = '\n'.join(line for line in lines
if not line.startswith(prefix))
if not keep.strip():
keep = ''
- self.tk.call('bind', self._w, sequence, keep)
+ self.tk.call(*what, keep)
self.deletecommand(funcid)
def bind_all(self, sequence=None, func=None, add=None):
@@ -1558,7 +1561,7 @@ class Misc:
def unbind_all(self, sequence):
"""Unbind for all widgets for event SEQUENCE all functions."""
- self.tk.call('bind', 'all' , sequence, '')
+ self._root()._unbind(('bind', 'all', sequence))
def bind_class(self, className, sequence=None, func=None, add=None):
"""Bind to widgets with bindtag CLASSNAME at event
@@ -1573,7 +1576,7 @@ class Misc:
def unbind_class(self, className, sequence):
"""Unbind for all widgets with bindtag CLASSNAME for event SEQUENCE
all functions."""
- self.tk.call('bind', className , sequence, '')
+ self._root()._unbind(('bind', className, sequence))
def mainloop(self, n=0):
"""Call the mainloop of Tk."""
@@ -2885,9 +2888,7 @@ class Canvas(Widget, XView, YView):
def tag_unbind(self, tagOrId, sequence, funcid=None):
"""Unbind for all items with TAGORID for event SEQUENCE the
function identified with FUNCID."""
- self.tk.call(self._w, 'bind', tagOrId, sequence, '')
- if funcid:
- self.deletecommand(funcid)
+ self._unbind((self._w, 'bind', tagOrId, sequence), funcid)
def tag_bind(self, tagOrId, sequence=None, func=None, add=None):
"""Bind to all items with TAGORID at event SEQUENCE a call to function FUNC.
@@ -3997,9 +3998,7 @@ class Text(Widget, XView, YView):
def tag_unbind(self, tagName, sequence, funcid=None):
"""Unbind for all characters with TAGNAME for event SEQUENCE the
function identified with FUNCID."""
- self.tk.call(self._w, 'tag', 'bind', tagName, sequence, '')
- if funcid:
- self.deletecommand(funcid)
+ return self._unbind((self._w, 'tag', 'bind', tagName, sequence), funcid)
def tag_bind(self, tagName, sequence, func, add=None):
"""Bind to all characters with TAGNAME at event SEQUENCE a call to function FUNC.
@@ -4010,6 +4009,11 @@ class Text(Widget, XView, YView):
return self._bind((self._w, 'tag', 'bind', tagName),
sequence, func, add)
+ def _tag_bind(self, tagName, sequence=None, func=None, add=None):
+ # For tests only
+ return self._bind((self._w, 'tag', 'bind', tagName),
+ sequence, func, add)
+
def tag_cget(self, tagName, option):
"""Return the value of OPTION for tag TAGNAME."""
if option[:1] != '-':