mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Issue #27319: Methods selection_set(), selection_add(), selection_remove()
and selection_toggle() of ttk.TreeView now allow to pass multiple items as multiple arguments instead of passing them as a tuple. Deprecated undocumented ability of calling the selection() method with arguments.
This commit is contained in:
parent
6c85091b5b
commit
b84f029baa
3 changed files with 90 additions and 20 deletions
|
@ -1487,6 +1487,7 @@ class TreeviewTest(AbstractWidgetTest, unittest.TestCase):
|
|||
|
||||
|
||||
def test_selection(self):
|
||||
self.assertRaises(TypeError, self.tv.selection, 'spam')
|
||||
# item 'none' doesn't exist
|
||||
self.assertRaises(tkinter.TclError, self.tv.selection_set, 'none')
|
||||
self.assertRaises(tkinter.TclError, self.tv.selection_add, 'none')
|
||||
|
@ -1500,25 +1501,31 @@ class TreeviewTest(AbstractWidgetTest, unittest.TestCase):
|
|||
c3 = self.tv.insert(item1, 'end')
|
||||
self.assertEqual(self.tv.selection(), ())
|
||||
|
||||
self.tv.selection_set((c1, item2))
|
||||
self.tv.selection_set(c1, item2)
|
||||
self.assertEqual(self.tv.selection(), (c1, item2))
|
||||
self.tv.selection_set(c2)
|
||||
self.assertEqual(self.tv.selection(), (c2,))
|
||||
|
||||
self.tv.selection_add((c1, item2))
|
||||
self.tv.selection_add(c1, item2)
|
||||
self.assertEqual(self.tv.selection(), (c1, c2, item2))
|
||||
self.tv.selection_add(item1)
|
||||
self.assertEqual(self.tv.selection(), (item1, c1, c2, item2))
|
||||
self.tv.selection_add()
|
||||
self.assertEqual(self.tv.selection(), (item1, c1, c2, item2))
|
||||
|
||||
self.tv.selection_remove((item1, c3))
|
||||
self.tv.selection_remove(item1, c3)
|
||||
self.assertEqual(self.tv.selection(), (c1, c2, item2))
|
||||
self.tv.selection_remove(c2)
|
||||
self.assertEqual(self.tv.selection(), (c1, item2))
|
||||
self.tv.selection_remove()
|
||||
self.assertEqual(self.tv.selection(), (c1, item2))
|
||||
|
||||
self.tv.selection_toggle((c1, c3))
|
||||
self.tv.selection_toggle(c1, c3)
|
||||
self.assertEqual(self.tv.selection(), (c3, item2))
|
||||
self.tv.selection_toggle(item2)
|
||||
self.assertEqual(self.tv.selection(), (c3,))
|
||||
self.tv.selection_toggle()
|
||||
self.assertEqual(self.tv.selection(), (c3,))
|
||||
|
||||
self.tv.insert('', 'end', id='with spaces')
|
||||
self.tv.selection_set('with spaces')
|
||||
|
@ -1536,6 +1543,40 @@ class TreeviewTest(AbstractWidgetTest, unittest.TestCase):
|
|||
self.tv.selection_set(b'bytes\xe2\x82\xac')
|
||||
self.assertEqual(self.tv.selection(), ('bytes\xe2\x82\xac',))
|
||||
|
||||
self.tv.selection_set()
|
||||
self.assertEqual(self.tv.selection(), ())
|
||||
|
||||
# Old interface
|
||||
self.tv.selection_set((c1, item2))
|
||||
self.assertEqual(self.tv.selection(), (c1, item2))
|
||||
self.tv.selection_add((c1, item1))
|
||||
self.assertEqual(self.tv.selection(), (item1, c1, item2))
|
||||
self.tv.selection_remove((item1, c3))
|
||||
self.assertEqual(self.tv.selection(), (c1, item2))
|
||||
self.tv.selection_toggle((c1, c3))
|
||||
self.assertEqual(self.tv.selection(), (c3, item2))
|
||||
|
||||
if sys.version_info >= (3, 7):
|
||||
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']
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue