Issue #6157: Fixed tkinter.Text.debug(). tkinter.Text.bbox() now raises

TypeError instead of TclError on wrong number of arguments.  Original patch
by Guilherme Polo.
This commit is contained in:
Serhiy Storchaka 2013-11-03 14:34:25 +02:00
commit 4babb9111f
4 changed files with 34 additions and 5 deletions

View file

@ -2911,11 +2911,11 @@ class Text(Widget, XView, YView):
""" """
Widget.__init__(self, master, 'text', cnf, kw) Widget.__init__(self, master, 'text', cnf, kw)
def bbox(self, *args): def bbox(self, index):
"""Return a tuple of (x,y,width,height) which gives the bounding """Return a tuple of (x,y,width,height) which gives the bounding
box of the visible part of the character at the index in ARGS.""" box of the visible part of the character at the given index."""
return self._getints( return self._getints(
self.tk.call((self._w, 'bbox') + args)) or None self.tk.call(self._w, 'bbox', index)) or None
def tk_textSelectTo(self, index): def tk_textSelectTo(self, index):
self.tk.call('tk_textSelectTo', self._w, index) self.tk.call('tk_textSelectTo', self._w, index)
def tk_textBackspace(self): def tk_textBackspace(self):
@ -2951,8 +2951,9 @@ class Text(Widget, XView, YView):
def debug(self, boolean=None): def debug(self, boolean=None):
"""Turn on the internal consistency checks of the B-Tree inside the text """Turn on the internal consistency checks of the B-Tree inside the text
widget according to BOOLEAN.""" widget according to BOOLEAN."""
return self.tk.getboolean(self.tk.call( if boolean is None:
self._w, 'debug', boolean)) return self.tk.call(self._w, 'debug')
self.tk.call(self._w, 'debug', boolean)
def delete(self, index1, index2=None): def delete(self, index1, index2=None):
"""Delete the characters between INDEX1 and INDEX2 (not included).""" """Delete the characters between INDEX1 and INDEX2 (not included)."""
self.tk.call(self._w, 'delete', index1, index2) self.tk.call(self._w, 'delete', index1, index2)

View file

@ -14,6 +14,17 @@ class TextTest(unittest.TestCase):
def tearDown(self): def tearDown(self):
self.text.destroy() self.text.destroy()
def test_debug(self):
text = self.text
olddebug = text.debug()
try:
text.debug(0)
self.assertEqual(text.debug(), 0)
text.debug(1)
self.assertEqual(text.debug(), 1)
finally:
text.debug(olddebug)
self.assertEqual(text.debug(), olddebug)
def test_search(self): def test_search(self):
text = self.text text = self.text

View file

@ -610,6 +610,19 @@ class TextTest(AbstractWidgetTest, unittest.TestCase):
else: else:
self.checkEnumParam(widget, 'wrap', 'char', 'none', 'word') self.checkEnumParam(widget, 'wrap', 'char', 'none', 'word')
def test_bbox(self):
widget = self.create()
bbox = widget.bbox('1.1')
self.assertEqual(len(bbox), 4)
for item in bbox:
self.assertIsInstance(item, int)
self.assertIsNone(widget.bbox('end'))
self.assertRaises(tkinter.TclError, widget.bbox, 'noindex')
self.assertRaises(tkinter.TclError, widget.bbox, None)
self.assertRaises(TypeError, widget.bbox)
self.assertRaises(TypeError, widget.bbox, '1.1', 'end')
@add_standard_options(PixelSizeTests, StandardOptionsTests) @add_standard_options(PixelSizeTests, StandardOptionsTests)
class CanvasTest(AbstractWidgetTest, unittest.TestCase): class CanvasTest(AbstractWidgetTest, unittest.TestCase):

View file

@ -31,6 +31,10 @@ Core and Builtins
Library Library
------- -------
- Issue #6157: Fixed tkinter.Text.debug(). tkinter.Text.bbox() now raises
TypeError instead of TclError on wrong number of arguments. Original patch
by Guilherme Polo.
- Issue #6160: The bbox() method of tkinter.Spinbox now returns a tuple of - Issue #6160: The bbox() method of tkinter.Spinbox now returns a tuple of
integers instead of a string. Based on patch by Guilherme Polo. integers instead of a string. Based on patch by Guilherme Polo.