Tkinter-使用单击而不是双击从Treeview中选择一个项目

问题描述 投票:0回答:2

[当您想在树状视图中选择一个项目时,通常使用双击:

def print_element(event):
    print(my_treeview.selection()[0])
my_treeview.bind("<Double-1>", print_element)

今天,我尝试执行相同的操作,但是使用了一次单击:

my_treeview.bind("<Button-1>", print_element)

但是它不起作用。输出只是一个空的元组。我开始在线搜索解释...为什么不起作用?

python tkinter tk ttk
2个回答
0
投票

为什么不起作用

当您在树形视图中单击某个项目时,在激活回调后,该项目仍未处于SELECTED状态。您正在此刻更改状态。

使用双击,第一次单击更改状态,而第二次单击则激活了回调,因此状态已经更改。

如何运作

this website

简而言之,

def print_element(event):
    print(my_treeview.identify('item', e.x, e.y))
my_treeview.bind("<Button-1>", print_element)

这次,print_element()将检查鼠标的坐标,并发现选中的项目以检查鼠标下的内容。干净整洁!


0
投票

是因为在调用<Button-1>(与<ButtonPress-1>相同,即,当鼠标按钮1 被按下但未松开时)尚未设置选择,]事件回调。

您应该绑定<ButtonRelease-1><<TreeviewSelect>>,因为在执行事件回调时已设置选择。

© www.soinside.com 2019 - 2024. All rights reserved.