ttk Treeview:如何选择一行?

Qub*_*028 3 python treeview

这一定是我缺少的一些简单的东西,但我似乎无法弄清楚如何使用该selection_set方法在 Treeview 中设置选择行。我对TTK文件有时指的是迷茫items和其他时间iid的方法参数。当我在 中插入一行Treeview时,我不是在创建一个我提供句柄的项目iid吗?

import Tkinter as Tk
import ttk

root = Tk.Tk()
tree = ttk.Treeview(root, displaycolumns='#all')
tree["columns"]=("1", "2", "3", "4")
tree.column("#0", width=70)
tree.column("1", width=70, anchor=Tk.CENTER)
tree.column("2", width=50, anchor=Tk.CENTER)
tree.column("3", width=50, anchor=Tk.CENTER)
tree.column("4", width=70, anchor=Tk.CENTER)
tree.heading("1", text="Column 1")
tree.heading("2", text="Column 2")
tree.heading("3", text="Column 3")
tree.heading("4", text="Column 4")
id2 = []
count = 0
item_list = ['A', 'B', 'C', 'D']
for item in item_list:
    id = tree.insert("", count, iid='Row %s'%count, text=item, values=('1', '2', '3', '4'))
    id2.append(id)
    count += 1

tree.selection_set('Row 0') # Doesn't work -- returns "_tkinter.TclError:  Item Row not found"
tree.pack(fill=Tk.BOTH, expand=1, side=Tk.RIGHT,padx=50)

Tk.mainloop()
Run Code Online (Sandbox Code Playgroud)

追溯:

import Tkinter as Tk
import ttk

root = Tk.Tk()
tree = ttk.Treeview(root, displaycolumns='#all')
tree["columns"]=("1", "2", "3", "4")
tree.column("#0", width=70)
tree.column("1", width=70, anchor=Tk.CENTER)
tree.column("2", width=50, anchor=Tk.CENTER)
tree.column("3", width=50, anchor=Tk.CENTER)
tree.column("4", width=70, anchor=Tk.CENTER)
tree.heading("1", text="Column 1")
tree.heading("2", text="Column 2")
tree.heading("3", text="Column 3")
tree.heading("4", text="Column 4")
id2 = []
count = 0
item_list = ['A', 'B', 'C', 'D']
for item in item_list:
    id = tree.insert("", count, iid='Row %s'%count, text=item, values=('1', '2', '3', '4'))
    id2.append(id)
    count += 1

tree.selection_set('Row 0') # Doesn't work -- returns "_tkinter.TclError:  Item Row not found"
tree.pack(fill=Tk.BOTH, expand=1, side=Tk.RIGHT,padx=50)

Tk.mainloop()
Run Code Online (Sandbox Code Playgroud)

mar*_*eau 7

这是因为您在选择名称中嵌入了空格。根据这个相关问题的答案,您可以简单地通过在它们周围加上引号来使用这样的名称:

tree.selection_set('"Row 0"')  # Does work.
Run Code Online (Sandbox Code Playgroud)

线索是在错误消息中说Item Row not found 不是 Item Row 0 not found