[3.8] bpo-31508: Remove support of arguments in tkinter.ttk.Treeview.selection. (GH-3651)
It was deprecated in 3.6.
This commit is contained in:
parent
12e7cd8a51
commit
97f1ca1673
|
@ -1094,14 +1094,13 @@ ttk.Treeview
|
||||||
the tree.
|
the tree.
|
||||||
|
|
||||||
|
|
||||||
.. method:: selection(selop=None, items=None)
|
.. method:: selection()
|
||||||
|
|
||||||
If *selop* is not specified, returns selected items. Otherwise, it will
|
Returns a tuple of selected items.
|
||||||
act according to the following selection methods.
|
|
||||||
|
|
||||||
.. deprecated-removed:: 3.6 3.8
|
.. versionchanged:: 3.8
|
||||||
Using ``selection()`` for changing the selection state is deprecated.
|
``selection()`` no longer takes arguments. For changing the selection
|
||||||
Use the following selection methods instead.
|
state use the following selection methods.
|
||||||
|
|
||||||
|
|
||||||
.. method:: selection_set(*items)
|
.. method:: selection_set(*items)
|
||||||
|
|
|
@ -113,3 +113,11 @@ This section lists previously described changes and other bugfixes
|
||||||
that may require changes to your code.
|
that may require changes to your code.
|
||||||
|
|
||||||
|
|
||||||
|
Changes in the Python API
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
* The :meth:`~tkinter.ttk.Treeview.selection` method of the
|
||||||
|
:class:`tkinter.ttk.Treeview` class no longer takes arguments. Using it with
|
||||||
|
arguments for changing the selection was deprecated in Python 3.6. Use
|
||||||
|
specialized methods like :meth:`~tkinter.ttk.Treeview.selection_set` for
|
||||||
|
changing the selection. (Contributed by Serhiy Storchaka in :issue:`31508`.)
|
||||||
|
|
|
@ -1556,27 +1556,6 @@ class TreeviewTest(AbstractWidgetTest, unittest.TestCase):
|
||||||
self.tv.selection_toggle((c1, c3))
|
self.tv.selection_toggle((c1, c3))
|
||||||
self.assertEqual(self.tv.selection(), (c3, item2))
|
self.assertEqual(self.tv.selection(), (c3, item2))
|
||||||
|
|
||||||
if sys.version_info >= (3, 8):
|
|
||||||
import warnings
|
|
||||||
warnings.warn(
|
|
||||||
'Deprecated API of Treeview.selection() should be removed')
|
|
||||||
self.tv.selection_set()
|
|
||||||
self.assertEqual(self.tv.selection(), ())
|
|
||||||
with self.assertWarns(DeprecationWarning):
|
|
||||||
self.tv.selection('set', (c1, item2))
|
|
||||||
self.assertEqual(self.tv.selection(), (c1, item2))
|
|
||||||
with self.assertWarns(DeprecationWarning):
|
|
||||||
self.tv.selection('add', (c1, item1))
|
|
||||||
self.assertEqual(self.tv.selection(), (item1, c1, item2))
|
|
||||||
with self.assertWarns(DeprecationWarning):
|
|
||||||
self.tv.selection('remove', (item1, c3))
|
|
||||||
self.assertEqual(self.tv.selection(), (c1, item2))
|
|
||||||
with self.assertWarns(DeprecationWarning):
|
|
||||||
self.tv.selection('toggle', (c1, c3))
|
|
||||||
self.assertEqual(self.tv.selection(), (c3, item2))
|
|
||||||
with self.assertWarns(DeprecationWarning):
|
|
||||||
selection = self.tv.selection(None)
|
|
||||||
self.assertEqual(selection, (c3, item2))
|
|
||||||
|
|
||||||
def test_set(self):
|
def test_set(self):
|
||||||
self.tv['columns'] = ['A', 'B']
|
self.tv['columns'] = ['A', 'B']
|
||||||
|
|
|
@ -28,8 +28,6 @@ __all__ = ["Button", "Checkbutton", "Combobox", "Entry", "Frame", "Label",
|
||||||
import tkinter
|
import tkinter
|
||||||
from tkinter import _flatten, _join, _stringify, _splitdict
|
from tkinter import _flatten, _join, _stringify, _splitdict
|
||||||
|
|
||||||
_sentinel = object()
|
|
||||||
|
|
||||||
# Verify if Tk is new enough to not need the Tile package
|
# Verify if Tk is new enough to not need the Tile package
|
||||||
_REQUIRE_TILE = True if tkinter.TkVersion < 8.5 else False
|
_REQUIRE_TILE = True if tkinter.TkVersion < 8.5 else False
|
||||||
|
|
||||||
|
@ -1396,26 +1394,9 @@ class Treeview(Widget, tkinter.XView, tkinter.YView):
|
||||||
self.tk.call(self._w, "see", item)
|
self.tk.call(self._w, "see", item)
|
||||||
|
|
||||||
|
|
||||||
def selection(self, selop=_sentinel, items=None):
|
def selection(self):
|
||||||
"""Returns the tuple of selected items."""
|
"""Returns the tuple of selected items."""
|
||||||
if selop is _sentinel:
|
return self.tk.splitlist(self.tk.call(self._w, "selection"))
|
||||||
selop = None
|
|
||||||
elif selop is None:
|
|
||||||
import warnings
|
|
||||||
warnings.warn(
|
|
||||||
"The selop=None argument of selection() is deprecated "
|
|
||||||
"and will be removed in Python 3.8",
|
|
||||||
DeprecationWarning, 3)
|
|
||||||
elif selop in ('set', 'add', 'remove', 'toggle'):
|
|
||||||
import warnings
|
|
||||||
warnings.warn(
|
|
||||||
"The selop argument of selection() is deprecated "
|
|
||||||
"and will be removed in Python 3.8, "
|
|
||||||
"use selection_%s() instead" % (selop,),
|
|
||||||
DeprecationWarning, 3)
|
|
||||||
else:
|
|
||||||
raise TypeError('Unsupported operation')
|
|
||||||
return self.tk.splitlist(self.tk.call(self._w, "selection", selop, items))
|
|
||||||
|
|
||||||
|
|
||||||
def _selection(self, selop, items):
|
def _selection(self, selop, items):
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
Removed support of arguments in `tkinter.ttk.Treeview.selection`. It was
|
||||||
|
deprecated in 3.6. Use specialized methods like `selection_set` for
|
||||||
|
changing the selection.
|
Loading…
Reference in New Issue