summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1999-03-16 21:54:50 (GMT)
committerGuido van Rossum <guido@python.org>1999-03-16 21:54:50 (GMT)
commiteb354b31e5cd5bcd1aa1350799966b20778d9592 (patch)
treeff422d0087ffca330e4fc7a4c5091bbd6791eacd
parent8d2c0c2ab4e5f5d4c930c344e0cdc7b800f6c17a (diff)
downloadcpython-eb354b31e5cd5bcd1aa1350799966b20778d9592.zip
cpython-eb354b31e5cd5bcd1aa1350799966b20778d9592.tar.gz
cpython-eb354b31e5cd5bcd1aa1350799966b20778d9592.tar.bz2
Bug reported by Jim Robinson:
An attempt to execute grid_slaves with arguments (0,0) results in *all* of the slaves being returned, not just the slave associated with row 0, column 0. This is because the test for arguments in the method does not test to see if row (and column) does not equal None, but rather just whether is evaluates to non-false. A value of 0 fails this test.
-rw-r--r--Lib/lib-tk/Tkinter.py26
1 files changed, 22 insertions, 4 deletions
diff --git a/Lib/lib-tk/Tkinter.py b/Lib/lib-tk/Tkinter.py
index 3e98cd6..e50a412 100644
--- a/Lib/lib-tk/Tkinter.py
+++ b/Lib/lib-tk/Tkinter.py
@@ -714,9 +714,9 @@ class Misc:
size = grid_size
def grid_slaves(self, row=None, column=None):
args = ()
- if row:
+ if row is not None:
args = args + ('-row', row)
- if column:
+ if column is not None:
args = args + ('-column', column)
return map(self._nametowidget,
self.tk.splitlist(self.tk.call(
@@ -1156,6 +1156,7 @@ def At(x, y=None):
return '@' + `x` + ',' + `y`
class Canvas(Widget):
+ _tagcommands = None
def __init__(self, master=None, cnf={}, **kw):
Widget.__init__(self, master, 'canvas', cnf, kw)
def addtag(self, *args):
@@ -1182,8 +1183,16 @@ class Canvas(Widget):
if funcid:
self.deletecommand(funcid)
def tag_bind(self, tagOrId, sequence=None, func=None, add=None):
- return self._bind((self._w, 'bind', tagOrId),
- sequence, func, add)
+ res = self._bind((self._w, 'bind', tagOrId),
+ sequence, func, add)
+ if sequence and func and res:
+ # remember the funcid for later
+ if self._tagcommands is None:
+ self._tagcommands = {}
+ list = self._tagcommands.get(tagOrId) or []
+ self._tagcommands[tagOrId] = list
+ list.append(res)
+ return res
def canvasx(self, screenx, gridspacing=None):
return getdouble(self.tk.call(
self._w, 'canvasx', screenx, gridspacing))
@@ -1227,7 +1236,16 @@ class Canvas(Widget):
def dchars(self, *args):
self.tk.call((self._w, 'dchars') + args)
def delete(self, *args):
+ self._delete_bindings(args)
self.tk.call((self._w, 'delete') + args)
+ def _delete_bindings(self, args):
+ for tag in args:
+ for a in self.tag_bind(tag):
+ b = self.tag_bind(tag, a)
+ c = _string.split(b, '[')[1]
+ d = _string.split(c)[0]
+ print "deletecommand(%s)" % `d`
+ self.deletecommand(d)
def dtag(self, *args):
self.tk.call((self._w, 'dtag') + args)
def find(self, *args):