bpo-23831: Add moveto method to the tkinter.Canvas widget. (GH-9768)
This commit is contained in:
parent
dc0d571b64
commit
bf034715db
|
@ -177,6 +177,10 @@ Added methods :meth:`~tkinter.Spinbox.selection_from`,
|
||||||
in the :class:`tkinter.Spinbox` class.
|
in the :class:`tkinter.Spinbox` class.
|
||||||
(Contributed by Juliette Monsel in :issue:`34829`.)
|
(Contributed by Juliette Monsel in :issue:`34829`.)
|
||||||
|
|
||||||
|
Added method :meth:`~tkinter.Canvas.moveto`
|
||||||
|
in the :class:`tkinter.Canvas` class.
|
||||||
|
(Contributed by Juliette Monsel in :issue:`23831`.)
|
||||||
|
|
||||||
venv
|
venv
|
||||||
----
|
----
|
||||||
|
|
||||||
|
|
|
@ -2914,6 +2914,15 @@ class Canvas(Widget, XView, YView):
|
||||||
"""Move an item TAGORID given in ARGS."""
|
"""Move an item TAGORID given in ARGS."""
|
||||||
self.tk.call((self._w, 'move') + args)
|
self.tk.call((self._w, 'move') + args)
|
||||||
|
|
||||||
|
def moveto(self, tagOrId, x='', y=''):
|
||||||
|
"""Move the items given by TAGORID in the canvas coordinate
|
||||||
|
space so that the first coordinate pair of the bottommost
|
||||||
|
item with tag TAGORID is located at position (X,Y).
|
||||||
|
X and Y may be the empty string, in which case the
|
||||||
|
corresponding coordinate will be unchanged. All items matching
|
||||||
|
TAGORID remain in the same positions relative to each other."""
|
||||||
|
self.tk.call(self._w, 'moveto', tagOrId, x, y)
|
||||||
|
|
||||||
def postscript(self, cnf={}, **kw):
|
def postscript(self, cnf={}, **kw):
|
||||||
"""Print the contents of the canvas to a postscript
|
"""Print the contents of the canvas to a postscript
|
||||||
file. Valid options: colormap, colormode, file, fontmap,
|
file. Valid options: colormap, colormode, file, fontmap,
|
||||||
|
|
|
@ -745,6 +745,29 @@ class CanvasTest(AbstractWidgetTest, unittest.TestCase):
|
||||||
self.checkPixelsParam(widget, 'yscrollincrement',
|
self.checkPixelsParam(widget, 'yscrollincrement',
|
||||||
10, 0, 11.2, 13.6, -10, '0.1i')
|
10, 0, 11.2, 13.6, -10, '0.1i')
|
||||||
|
|
||||||
|
@requires_tcl(8, 6)
|
||||||
|
def test_moveto(self):
|
||||||
|
widget = self.create()
|
||||||
|
i1 = widget.create_rectangle(1, 1, 20, 20, tags='group')
|
||||||
|
i2 = widget.create_rectangle(30, 30, 50, 70, tags='group')
|
||||||
|
x1, y1, _, _ = widget.bbox(i1)
|
||||||
|
x2, y2, _, _ = widget.bbox(i2)
|
||||||
|
widget.moveto('group', 200, 100)
|
||||||
|
x1_2, y1_2, _, _ = widget.bbox(i1)
|
||||||
|
x2_2, y2_2, _, _ = widget.bbox(i2)
|
||||||
|
self.assertEqual(x1_2, 200)
|
||||||
|
self.assertEqual(y1_2, 100)
|
||||||
|
self.assertEqual(x2 - x1, x2_2 - x1_2)
|
||||||
|
self.assertEqual(y2 - y1, y2_2 - y1_2)
|
||||||
|
widget.tag_lower(i2, i1)
|
||||||
|
widget.moveto('group', y=50)
|
||||||
|
x1_3, y1_3, _, _ = widget.bbox(i1)
|
||||||
|
x2_3, y2_3, _, _ = widget.bbox(i2)
|
||||||
|
self.assertEqual(y2_3, 50)
|
||||||
|
self.assertEqual(x2_3, x2_2)
|
||||||
|
self.assertEqual(x2_2 - x1_2, x2_3 - x1_3)
|
||||||
|
self.assertEqual(y2_2 - y1_2, y2_3 - y1_3)
|
||||||
|
|
||||||
|
|
||||||
@add_standard_options(IntegerSizeTests, StandardOptionsTests)
|
@add_standard_options(IntegerSizeTests, StandardOptionsTests)
|
||||||
class ListboxTest(AbstractWidgetTest, unittest.TestCase):
|
class ListboxTest(AbstractWidgetTest, unittest.TestCase):
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Add ``moveto()`` method to the ``tkinter.Canvas`` widget. Patch by Juliette
|
||||||
|
Monsel.
|
Loading…
Reference in New Issue