更正参数以将绑定事件传递给 Tkinter 中的 treeview.identify/identify_region?
Correct parameter to pass a bound event to treeview.identify/identify_region in Tkinter?
我有几个 treeviews
tkinter 小部件。出于样式目的,我需要防止在不完全禁用列大小调整的情况下手动调整 treeview
列 width 的大小。
使用此处提供的可能解决方案: 我在列之间的 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
的值来验证这一点
我有几个 treeviews
tkinter 小部件。出于样式目的,我需要防止在不完全禁用列大小调整的情况下手动调整 treeview
列 width 的大小。
使用此处提供的可能解决方案: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