首页 > 解决方案 > ttk.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()

标签: pythontkintertreeview

解决方案


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

可悲的是,ttk 小部件有点古怪。您需要确保小部件作为一个整体具有焦点,选择了一个项目,并且选定的项目需要具有焦点。你已经完成了前两个,但没有完成第三个。

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

tree.focus('gallery1')

推荐阅读