Python 2.7 将绑定事件传递到treeview的参数是否正确。是否在Tkinter中标识/标识\u区域?
我有两个TreeView tkinter小部件。出于样式的目的,我需要防止在不完全禁用列大小调整的情况下手动调整treeview列宽度的大小 使用这里提供的一个可能的解决方案:我在列之间的分隔符上捕获单击事件,并在那里停止事件。为此,每个treeview都绑定了一个处理函数 例如:Python 2.7 将绑定事件传递到treeview的参数是否正确。是否在Tkinter中标识/标识\u区域?,python-2.7,tkinter,treeview,ttk,Python 2.7,Tkinter,Treeview,Ttk,我有两个TreeView tkinter小部件。出于样式的目的,我需要防止在不完全禁用列大小调整的情况下手动调整treeview列宽度的大小 使用这里提供的一个可能的解决方案:我在列之间的分隔符上捕获单击事件,并在那里停止事件。为此,每个treeview都绑定了一个处理函数 例如: self.tree.bind('<Button-1>', lambda event: handle_treeview_single_click(self.tree, event)) def handle
self.tree.bind('<Button-1>', lambda event: handle_treeview_single_click(self.tree, event))
def handle_treeview_single_click(tree, event):
if tree.identify_region(event.x, event.y) == 'separator':
return 'break'
无论我在标题、单元格或分隔符上单击什么对象,这都不会改变。例如,相关参数如下所示:
tree = Treeview: .42424440.47830640.47831440.47831800.47831840
x = 464
y = 14
不确定我在这里遗漏了什么,因为我对python还比较陌生。ttk源代码中有一条注释解释了为什么这可能不起作用:
def identify_region(self, x, y):
"""
...
* Availability: Tk 8.6"""
return self.identify("region", x, y)
因为您使用的是Python2.7,所以可能没有使用TK8.6。您可以通过打印Tkinter.TkVersion的值来验证这一点。我验证了版本,您完全正确。是8.5。非常感谢。我完全理解否决票背后的原因。从经验丰富的开发人员的角度来看,这可能看起来像一个愚蠢的问题。使用pycharm并将其作为缺乏经验的工具进行调试,仍然很难指出问题所在。我在这里发帖之前试了很多。指的是:也许你可以考虑一下。
def identify_region(self, x, y):
"""
...
* Availability: Tk 8.6"""
return self.identify("region", x, y)