Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 255bbf2

Browse files
Issue #26386: Fixed ttk.TreeView selection operations with item id's
containing spaces.
2 parents 6d1d2f2 + 8e6d09c commit 255bbf2

3 files changed

Lines changed: 57 additions & 1 deletion

File tree

Lib/tkinter/test/test_ttk/test_widgets.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1486,6 +1486,57 @@ def test_insert_item(self):
14861486
value)
14871487

14881488

1489+
def test_selection(self):
1490+
# item 'none' doesn't exist
1491+
self.assertRaises(tkinter.TclError, self.tv.selection_set, 'none')
1492+
self.assertRaises(tkinter.TclError, self.tv.selection_add, 'none')
1493+
self.assertRaises(tkinter.TclError, self.tv.selection_remove, 'none')
1494+
self.assertRaises(tkinter.TclError, self.tv.selection_toggle, 'none')
1495+
1496+
item1 = self.tv.insert('', 'end')
1497+
item2 = self.tv.insert('', 'end')
1498+
c1 = self.tv.insert(item1, 'end')
1499+
c2 = self.tv.insert(item1, 'end')
1500+
c3 = self.tv.insert(item1, 'end')
1501+
self.assertEqual(self.tv.selection(), ())
1502+
1503+
self.tv.selection_set((c1, item2))
1504+
self.assertEqual(self.tv.selection(), (c1, item2))
1505+
self.tv.selection_set(c2)
1506+
self.assertEqual(self.tv.selection(), (c2,))
1507+
1508+
self.tv.selection_add((c1, item2))
1509+
self.assertEqual(self.tv.selection(), (c1, c2, item2))
1510+
self.tv.selection_add(item1)
1511+
self.assertEqual(self.tv.selection(), (item1, c1, c2, item2))
1512+
1513+
self.tv.selection_remove((item1, c3))
1514+
self.assertEqual(self.tv.selection(), (c1, c2, item2))
1515+
self.tv.selection_remove(c2)
1516+
self.assertEqual(self.tv.selection(), (c1, item2))
1517+
1518+
self.tv.selection_toggle((c1, c3))
1519+
self.assertEqual(self.tv.selection(), (c3, item2))
1520+
self.tv.selection_toggle(item2)
1521+
self.assertEqual(self.tv.selection(), (c3,))
1522+
1523+
self.tv.insert('', 'end', id='with spaces')
1524+
self.tv.selection_set('with spaces')
1525+
self.assertEqual(self.tv.selection(), ('with spaces',))
1526+
1527+
self.tv.insert('', 'end', id='{brace')
1528+
self.tv.selection_set('{brace')
1529+
self.assertEqual(self.tv.selection(), ('{brace',))
1530+
1531+
self.tv.insert('', 'end', id='unicode\u20ac')
1532+
self.tv.selection_set('unicode\u20ac')
1533+
self.assertEqual(self.tv.selection(), ('unicode\u20ac',))
1534+
1535+
self.tv.insert('', 'end', id=b'bytes\xe2\x82\xac')
1536+
self.tv.selection_set(b'bytes\xe2\x82\xac')
1537+
self.assertEqual(self.tv.selection(), ('bytes\xe2\x82\xac',))
1538+
1539+
14891540
def test_set(self):
14901541
self.tv['columns'] = ['A', 'B']
14911542
item = self.tv.insert('', 'end', values=['a', 'b'])

Lib/tkinter/ttk.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1396,7 +1396,9 @@ def see(self, item):
13961396

13971397
def selection(self, selop=None, items=None):
13981398
"""If selop is not specified, returns selected items."""
1399-
return self.tk.call(self._w, "selection", selop, items)
1399+
if isinstance(items, (str, bytes)):
1400+
items = (items,)
1401+
return self.tk.splitlist(self.tk.call(self._w, "selection", selop, items))
14001402

14011403

14021404
def selection_set(self, items):

Misc/NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ What's New in Python 3.6.0 alpha 3
1010
Library
1111
-------
1212

13+
- Issue #26386: Fixed ttk.TreeView selection operations with item id's
14+
containing spaces.
15+
1316
- Issue #8637: Honor a pager set by the env var MANPAGER (in preference to
1417
one set by the env var PAGER).
1518

0 commit comments

Comments
 (0)