我在尝试从另一个小部件的回调中取消选择Treeview
项时遇到问题。我设法在 ESCAPE 上实施了一个工作取消选择,按下:
tree.selection_remove(tree.focus())
在绑定到treeview对象本身的回调中。它仅在树视图具有焦点时才起作用(但它可以,这是一种期望的行为)。另一方面,从另一个小部件的回调中尝试相同的方法并不起作用。
我尝试使用:
tree.selection_clear()
按照建议here,但这也不起作用。
重要:在tree.selection_add(iid)
的同一通话中选择树视图中的项目。与操纵另一个小部件(组合框,执行调用的小部件是一个框架)相同。基于此,我不认为问题是由于我的代码中的一些愚蠢的错误(一个错字或类似的东西)。
我的理论是失焦是一个问题,因为它是我看到的相同代码与 ESCAPE 之间的唯一区别,而不是其他地方,所以我试图获得焦点tree.focus_set()
和tree.focus_force()
,但这并没有改变任何事情。
我不太清楚selection_clear()
应该做什么。由于ttk.Treeview
从ttk.Misc
继承此方法,因此文档很简洁。我无法找到任何内容here或here。我发现的唯一的事情就是简洁:
清除当前的X选择。
来自Python shell帮助(隐藏的X
,坐标是什么?)
那么如何实现如此简单呢?请帮忙,我不知所措。
答案 0 :(得分:1)
行。所以答案是:
ttk.Treeview.selection()
它未在the great New Mexico Tech resource中列出,但它在the best tutorial out there中得到提及,(当然)在the docs中。不知怎的,它仍然逃脱了我。
现在,有一种测试选择内容的方法很简单:
if len(tree.selection()) > 0:
tree.selection_remove(tree.selection()[0])
答案 1 :(得分:0)
那又怎么样:
for item in self.tree.selection():
self.tree.selection_remove(item)