summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/library/tkinter.ttk.rst11
-rw-r--r--Doc/whatsnew/3.8.rst8
-rw-r--r--Lib/tkinter/test/test_ttk/test_widgets.py21
-rw-r--r--Lib/tkinter/ttk.py23
-rw-r--r--Misc/NEWS.d/next/Library/2017-09-19-12-38-31.bpo-31508.pDsFJl.rst3
5 files changed, 18 insertions, 48 deletions
diff --git a/Doc/library/tkinter.ttk.rst b/Doc/library/tkinter.ttk.rst
index debbc81..9c0c4cd 100644
--- a/Doc/library/tkinter.ttk.rst
+++ b/Doc/library/tkinter.ttk.rst
@@ -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)
diff --git a/Doc/whatsnew/3.8.rst b/Doc/whatsnew/3.8.rst
index 59f1883..8a3f9b0 100644
--- a/Doc/whatsnew/3.8.rst
+++ b/Doc/whatsnew/3.8.rst
@@ -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`.)
diff --git a/Lib/tkinter/test/test_ttk/test_widgets.py b/Lib/tkinter/test/test_ttk/test_widgets.py
index ab0db28..08f5fc3 100644
--- a/Lib/tkinter/test/test_ttk/test_widgets.py
+++ b/Lib/tkinter/test/test_ttk/test_widgets.py
@@ -1556,27 +1556,6 @@ class TreeviewTest(AbstractWidgetTest, unittest.TestCase):
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']
diff --git a/Lib/tkinter/ttk.py b/Lib/tkinter/ttk.py
index e6c90ce..2ab5b59 100644
--- a/Lib/tkinter/ttk.py
+++ b/Lib/tkinter/ttk.py
@@ -28,8 +28,6 @@ __all__ = ["Button", "Checkbutton", "Combobox", "Entry", "Frame", "Label",
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
@@ -1396,26 +1394,9 @@ class Treeview(Widget, tkinter.XView, tkinter.YView):
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):
diff --git a/Misc/NEWS.d/next/Library/2017-09-19-12-38-31.bpo-31508.pDsFJl.rst b/Misc/NEWS.d/next/Library/2017-09-19-12-38-31.bpo-31508.pDsFJl.rst
new file mode 100644
index 0000000..b3d49ee
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2017-09-19-12-38-31.bpo-31508.pDsFJl.rst
@@ -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.