我有一个带有一些数据行的 ttk.Treeview 小部件。如何设置焦点并选择(突出显示)指定项目?
tree.focus_set()
什么也没做
tree.selection_set(0)
抱怨说:未找到第 0 项,尽管小部件显然填充了超过零个项目。尝试第 1 项并没有更好。
编辑:选择一个项目,找到它的 id,然后使用 tree.selection_set(id)。tree.focus(id) 和 tree.focus_set(id) 似乎都没有做任何事情。
获取要突出显示/选择的树视图项目的 ID
child_id = tree.get_children()[-1] # for instance the last element in tuple
要突出显示该项目,请同时使用focus()
和selection_set(item_id)
tree.focus(child_id)
tree.selection_set(child_id)
当我想解决完全相同的问题时遇到这个问题。
发现了这个:
tree.selection_set(item)
突出显示项目
tree.focus(item)
或tree.focus_set(item)
选择项目
def mycallback(event):
_iid = treeview.identify_row(event.y)
global last_focus
if _iid != last_focus:
if last_focus:
treeview.item(last_focus, tags=[])
treeview.item(_iid, tags=['focus'])
last_focus = _iid
treeview.tag_configure('focus', background='red')
global last_focus
last_focus = None
treeview.bind("<Motion>", mycallback)
使用 tree.selection_add(item_iid)
tree.selection_set(0) 不起作用的原因是因为 0 不是项目 iid,它是您所指的索引,而 Treeview 需要一个 iid。