Python ttk.Treeview-如何在不首先单击的情况下更改选择

Python ttk.Treeview-如何在不首先单击的情况下更改选择,python,tkinter,treeview,Python,Tkinter,Treeview,我认为在ttk.Treeview中设置默认选中的行将使您无需首先单击以开始使用键盘上的箭头按钮来更改选择。这不起作用,所以我试着在树视图上设置焦点,但经过多次尝试和错误后,什么都不起作用。我查看了ttk的源代码,看看Treeview小部件是否绑定到鼠标,但没有这样的东西。这是令人费解的,我没有足够的经验知道还有什么地方可以看。我已经习惯了Windows文件资源管理器,它一打开就可以无鼠标导航,可以使用选项卡或箭头按钮 我尝试了几个Treeview小部件的在线示例,它们都必须单击一行,箭头键才能更

我认为在ttk.Treeview中设置默认选中的行将使您无需首先单击以开始使用键盘上的箭头按钮来更改选择。这不起作用,所以我试着在树视图上设置焦点,但经过多次尝试和错误后,什么都不起作用。我查看了ttk的源代码,看看Treeview小部件是否绑定到鼠标,但没有这样的东西。这是令人费解的,我没有足够的经验知道还有什么地方可以看。我已经习惯了Windows文件资源管理器,它一打开就可以无鼠标导航,可以使用选项卡或箭头按钮

我尝试了几个Treeview小部件的在线示例,它们都必须单击一行,箭头键才能更改选择。这怎么能被推翻呢?我想我必须模拟按钮点击,但在源代码中找不到按钮点击的回调。谢谢你的帮助

(在我的应用程序中,通常只有几行,所以先单击没有意义)

我尝试了几个Treeview小部件的在线示例,它们都必须单击一行,箭头键才能更改选择。这怎么能被推翻呢

遗憾的是,ttk小部件有点古怪。您需要确保小部件作为一个整体具有焦点,选择了一个项目,并且所选项目需要具有焦点。你做了前两个,但没有做第三个

在调用
focus\u set()
后添加以下内容:


使用
tree.focus('gallery1')
尝试,没有任何区别,因为默认情况下选择了第一行。尝试使用
tree.focus('gallery2')
,第一列被点起来,但蓝色背景留在第一行。@stovfl:我不理解你的评论。您的问题是关于如何使键盘绑定工作,但您的评论没有提到任何关于键绑定的内容<代码>树。焦点('gallery1)与所选内容无关,不会更改所选内容。有了这个更改,键盘绑定可以工作吗?如果没有,您使用的是什么操作系统`好的,没有选择更改,但键盘绑定可以工作。@stovfl:它不是要更改选择,因为代码已经在设置选择。
import tkinter as tk
from tkinter import ttk

root = tk.Tk()

tree = ttk.Treeview(root, columns=('size', 'modified'), selectmode='browse')

tree.heading('size', text='SIZE')
tree.heading('modified', text='MODIFIED')

tree.insert('', 0, 'gallery1', text='Applications1')
tree.insert('', 1, 'gallery2', text='Applications2')

tree.selection_set('gallery1')

tree.focus_set()

tree.grid()
root.mainloop()
tree.focus('gallery1')