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

时间:2018-11-02 08:32:37

标签: python tkinter treeview

我认为在ttk.Treeview中设置默认要选择的行,这样就不必先单击即可开始使用键盘上的箭头按钮来更改选择。这没有用,所以我尝试将注意力集中在Treeview上,但是经过反复尝试,没有任何效果。我查看了ttk的源代码,以查看Treeview小部件是否具有与鼠标的绑定,但没有绑定。这令人费解,而且我没有足够的经验去了解其他地方。我已经习惯了Windows文件浏览器,该文件浏览器一旦打开就可以使用选项卡或箭头按钮进行无鼠标导航。

我尝试了几个Treeview小部件的在线示例,并且都必须单击一行,然后才能使用箭头键更改选择。如何覆盖?我想我必须模拟一次按钮单击,但是在源代码中找不到按钮单击的回调。感谢您的协助。

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

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()

1 个答案:

答案 0 :(得分:1)

  

我尝试了几个Treeview小部件的在线示例,并且都必须单击一行,然后才能使用箭头键更改选择。如何覆盖?

遗憾的是,ttk小部件有点古怪。您需要确保整个小部件都具有焦点,选择了一个项目,并且所选项目需要具有焦点。您已经完成了前两个,但没有完成。

在调用focus_set()之后添加以下内容:

tree.focus('gallery1')