更正参数以将绑定事件传递给 Tkinter 中的 treeview.identify/identify_region?

Correct parameter to pass a bound event to treeview.identify/identify_region in Tkinter?

我有几个 treeviews tkinter 小部件。出于样式目的,我需要防止在不完全禁用列大小调整的情况下手动调整 treeviewwidth 的大小。

使用此处提供的可能解决方案: 我在列之间的 separators 上捕获单击事件并在那里停止事件。为此,每个 treeview 绑定一个处理函数。

示例:

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'

运行 代码产生以下错误:

  File "C:\Program Files (x86)\Python27\ArcGIS10.2\lib\lib-tk\ttk.py", line 1277, in identify
    return self.tk.call(self._w, "identify", component, x, y)
TclError: bad component "region": must be row or column

无论我单击哪个对象(页眉、单元格或分隔符),这都不会改变。例如,相关参数如下所示:

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)

由于您使用的是 python 2.7,您可能没有使用 tk 8.6。您可以通过打印出 Tkinter.TkVersion

的值来验证这一点