8

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

tree.focus_set()

什么也没做

tree.selection_set(0)

抱怨说:未找到第 0 项,尽管小部件显然填充了超过零个项目。尝试第 1 项并没有更好。

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

4

5 回答 5

9

获取要突出显示/选择的树视图项目的 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)
于 2018-11-05T10:38:52.183 回答
3

注意:我没有使用过python。

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

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

于 2011-10-22T20:46:33.750 回答
3

当我想解决完全相同的问题时遇到这个问题。

发现了这个:

tree.selection_set(item)突出显示项目

tree.focus(item)tree.focus_set(item)选择项目

于 2016-04-27T21:25:26.663 回答
2
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)
于 2019-04-19T11:00:20.597 回答
1

使用 tree.selection_add(item_iid)

tree.selection_set(0) 不起作用的原因是因为 0 不是项目 iid,它是您所指的索引,而 Treeview 需要一个 iid。

于 2017-12-29T23:01:02.413 回答