我有一个带有一些数据行的ttk.Treeview小部件。如何将焦点设置为并选择(突出显示)指定的项目?
tree.focus_set()
什么都不做
tree.selection_set(0)
抱怨:找不到项目0,尽管小部件显然填充了多于零的项目。尝试第1项并不是更好。
编辑:选择一个项目,找到它的id,然后使用tree.selection_set(id)。无论是tree.focus(id)还是tree.focus_set(id)都没有做任何事情。
答案 0 :(得分:1)
答案 1 :(得分:1)
当我想要解决完全相同的问题时遇到这个问题。
发现这个:
tree.selection_set(item)
突出显示该项
tree.focus(item)
或tree.focus_set(item)
选择项目
答案 2 :(得分:1)
获取要突出显示/选择的树状视图项的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)
答案 3 :(得分:0)
使用 tree.selection_add(item_iid)
原因 tree.selection_set(0)不起作用是因为0不是项目iid,它是你所指的索引,Treeview期待一个iid。
答案 4 :(得分:0)
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)