При использовании элемента управления Ttk Treeview я получаю TclError при попытке программно установить несколько выбранных элементов.
Как правильно установить несколько элементов, выбранных в элементе управления Treeview?
В документации не ясно, какие типы разрешены для items
:
selection_set(items)
пунктов становится новым выбором.
Я упростил свой код до следующего:
try: # python 2
import Tkinter as tk
import ttk
except ImportError: # python 3
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
tree = ttk.Treeview(root)
for text in ['apple', 'banana', 'coconut']:
tree.insert('', 'end', text=text)
all_items = list(tree.get_children())
print("all_items = {!r}".format(all_items))
tree.selection_set(all_items)
Однако возникает исключение:
all_items = ['I001', 'I002', 'I003']
Traceback (most recent call last):
File ...
tree.selection_set(all_items)
File "C:\Python27\lib\lib-tk\ttk.py", line 1402, in selection_set
self.selection("set", items)
File "C:\Python27\lib\lib-tk\ttk.py", line 1397, in selection
return self.tk.call(self._w, "selection", selop, items)
_tkinter.TclError: Item ['I001', not found
В последней строке сообщения об ошибке создается впечатление, что он преобразует список элементов в строку, используя только str, но формат не соответствует ожидаемому бэкэндом.