python ttk treeview:如何选择并设置焦点在一行?

时间:2011-10-22 20:25:55

标签: python ttk

我有一个带有一些数据行的ttk.Treeview小部件。如何将焦点设置为并选择(突出显示)指定的项目?

tree.focus_set()

什么都不做

tree.selection_set(0)

抱怨:找不到项目0,尽管小部件显然填充了多于零的项目。尝试第1项并不是更好。

编辑:选择一个项目,找到它的id,然后使用tree.selection_set(id)。无论是tree.focus(id)还是tree.focus_set(id)都没有做任何事情。

5 个答案:

答案 0 :(得分:1)

注意:我没有使用过python。

查看this链接,带有可选参数项的focus方法应突出显示该节点。

如果没有,请查看selectmode选项&将其设置为"browse"

答案 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)