[当您想在树状视图中选择一个项目时,通常使用双击:
def print_element(event):
print(my_treeview.selection()[0])
my_treeview.bind("<Double-1>", print_element)
今天,我尝试执行相同的操作,但是使用了一次单击:
my_treeview.bind("<Button-1>", print_element)
但是它不起作用。输出只是一个空的元组。我开始在线搜索解释...为什么不起作用?
当您在树形视图中单击某个项目时,在激活回调后,该项目仍未处于SELECTED状态。您正在此刻更改状态。
使用双击,第一次单击更改状态,而第二次单击则激活了回调,因此状态已经更改。
简而言之,
def print_element(event):
print(my_treeview.identify('item', e.x, e.y))
my_treeview.bind("<Button-1>", print_element)
这次,print_element()
将检查鼠标的坐标,并发现选中的项目以检查鼠标下的内容。干净整洁!
是因为在调用<Button-1>
(与<ButtonPress-1>
相同,即,当鼠标按钮1 被按下但未松开时)尚未设置选择,]事件回调。
您应该绑定<ButtonRelease-1>
或<<TreeviewSelect>>
,因为在执行事件回调时已设置选择。