Python 在ttk树视图中设置多个选定项

Python 在ttk树视图中设置多个选定项,python,python-2.7,tkinter,ttk,Python,Python 2.7,Tkinter,Ttk,当使用Ttk Treeview控件时,我在尝试以编程方式设置多个选定项时遇到一个错误 在Treeview控件中设置多个选定项的正确方法是什么 不清楚项允许的类型: 选择\u设置(项目)项目成为新选择 我已将代码简化为以下内容: try: # python 2 import Tkinter as tk import ttk except ImportError: # python 3 import tkinter as tk from tkinter impor

当使用Ttk Treeview控件时,我在尝试以编程方式设置多个选定项时遇到一个错误

在Treeview控件中设置多个选定项的正确方法是什么

不清楚
项允许的类型:

选择\u设置(项目)
项目成为新选择

我已将代码简化为以下内容:

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将项目列表转换为字符串,但格式不是后端所期望的格式。

结果是
选择集的
项目
参数不能是列表。它必须是以空格分隔的IID列表或IID元组

以下任一项对我有效:

tree.selection_set(tuple(all_items))
或:

但是,如果使用带空格的字符串设置项目ID,则后一种方法将不起作用

(另外,
tree.get_children()
返回一个元组,因此原始代码中的列表转换也可以删除,并且可以正常工作。不过,在我的完整代码中,我是以更复杂的方式生成列表的)

tree.selection_set(" ".join(all_items))