python - 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()
解决方案
我尝试了几个 Treeview 小部件的在线示例,它们都必须单击一行,然后箭头键才能更改选择。这怎么能被覆盖?
可悲的是,ttk 小部件有点古怪。您需要确保小部件作为一个整体具有焦点,选择了一个项目,并且选定的项目需要具有焦点。你已经完成了前两个,但没有完成第三个。
调用后添加以下内容focus_set()
:
tree.focus('gallery1')
推荐阅读
- ios - ios - Xcode 9.4.1 在 main.storyboard 中卡住加载
- excel - Excel VBA - 不一致文本字符串的格式
- maven - AWS - 存储库无法下载 redshift jdbc jar
- android - 如何在 ubuntu 中构建反应原生 android 应用程序以进行生产
- c# - 在 PublisherCacheFolder 中创建 Sqlite 数据库
- laravel-5 - laravel 查询生成器删除 where 子句
- reactjs - 将道具值与具有新(漂亮)值的查找列表匹配
- asp.net - 如何将数据从 Unity3D_WebGL 发布到 asp.net
- c++ - 使用元类强制所有枚举类类型具有公共元素
- video - ffmpeg中带有png图像的电影