z33*_*33k 1 python treeview tkinter ttk
我在尝试Treeview从另一个小部件的回调中取消选择一个项目时遇到了麻烦。我设法在ESCAPE新闻界实施了一个有效的取消选择:
tree.selection_remove(tree.focus())
Run Code Online (Sandbox Code Playgroud)
在绑定到树视图对象本身的回调中。它仅在树视图具有焦点时才有效(但没关系,这是一种理想的行为)。另一方面,从另一个小部件的回调中尝试相同的方法不起作用。
我尝试使用:
tree.selection_clear()
Run Code Online (Sandbox Code Playgroud)
正如这里推荐的那样,但这也不起作用。
重要提示:从与tree.selection_add(iid)作品相同的调用中选择树视图中的项目。与操作另一个小部件(组合框,并且进行调用的小部件是一个框架)相同。基于此,我不认为问题是由于我的代码中的一些愚蠢的错误(错字或类似的东西)造成的。
我的理论是失去焦点是一个问题,因为这是我看到的唯一区别,当相同的代码ESCAPE在其他地方工作但不在其他地方时,所以我试图用tree.focus_set()和获得焦点tree.focus_force(),但这并没有改变任何东西。
我不太明白selection_clear()应该做什么。由于ttk.Treeview从ttk.Misc有关此的文档中继承了此方法,因此很少使用。我在这里或这里找不到任何关于它的东西。我发现的唯一一件事是简洁:
清除当前的 X 选择。
来自 Python shell 帮助(神秘的X坐标是什么?)
那么如何做到这么简单的事情呢?请帮忙,我不知所措。
好的。所以答案是:
ttk.Treeview.selection()
Run Code Online (Sandbox Code Playgroud)
它没有列在伟大的新墨西哥技术资源中,但它确实在那里的最佳教程中被提及,并且(当然)在文档中。不知怎的,它仍然逃过我的视线。
现在,有一种测试选择内容的方法很容易:
if len(tree.selection()) > 0:
tree.selection_remove(tree.selection()[0])
Run Code Online (Sandbox Code Playgroud)
关于什么:
for item in self.tree.selection():
self.tree.selection_remove(item)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3725 次 |
| 最近记录: |