Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 5 additions & 6 deletions Doc/library/tkinter.ttk.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1094,14 +1094,13 @@ ttk.Treeview
the tree.


.. method:: selection(selop=None, items=None)
.. method:: selection()

If *selop* is not specified, returns selected items. Otherwise, it will
act according to the following selection methods.
Returns a tuple of selected items.

.. deprecated-removed:: 3.6 3.8
Using ``selection()`` for changing the selection state is deprecated.
Use the following selection methods instead.
.. versionchanged:: 3.8
``selection()`` no longer takes arguments. For changing the selection
state use the following selection methods.


.. method:: selection_set(*items)
Expand Down
8 changes: 8 additions & 0 deletions Doc/whatsnew/3.8.rst
Original file line number Diff line number Diff line change
Expand Up @@ -113,3 +113,11 @@ This section lists previously described changes and other bugfixes
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`.)
21 changes: 0 additions & 21 deletions Lib/tkinter/test/test_ttk/test_widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -1556,27 +1556,6 @@ def test_selection(self):
self.tv.selection_toggle((c1, c3))
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):
self.tv['columns'] = ['A', 'B']
Expand Down
23 changes: 2 additions & 21 deletions Lib/tkinter/ttk.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,6 @@
import tkinter
from tkinter import _flatten, _join, _stringify, _splitdict

_sentinel = object()

# Verify if Tk is new enough to not need the Tile package
_REQUIRE_TILE = True if tkinter.TkVersion < 8.5 else False

Expand Down Expand Up @@ -1396,26 +1394,9 @@ def see(self, item):
self.tk.call(self._w, "see", item)


def selection(self, selop=_sentinel, items=None):
def selection(self):
"""Returns the tuple of selected items."""
if selop is _sentinel:
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))
return self.tk.splitlist(self.tk.call(self._w, "selection"))


def _selection(self, selop, items):
Expand Down
Original file line number Diff line number Diff line change
@@ -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.