以下仅在Windows上进行了测试,其他操作系统可能有所不同。
对于任何将来的读者,从Tk
8.5开始,Treeviews都有一种
identify_region方法可以接受屏幕位置(x,y),并将返回与这些坐标所占据的Treeview区域相对应的字符串。
返回值之一是“ separator”。
我用它来捕获分隔符上的双击事件以自动调整列的大小,但是您也可以用它来捕获单击事件并阻止它们。
例如:
def handle_click(event): if treeview.identify_region(event.x, event.y) == "separator": return "break"#...treeview.bind('<Button-1>', handle_click)这样做的好处是 不会 禁用整个树形视图-因此您仍然可以选择/扩展/折叠行,单击列标题进行排序等-您将无法调整列的大小。
请注意,即使禁用了调整大小,“双箭头”光标(⇔)仍会出现。您还可以通过对
<Motion>事件执行完全相同的操作来防止显示双箭头光标(绑定到该事件,检查该事件是否在分隔符上方,并通过返回字符串阻止传播该事件
"break")。
>>> sys.version'3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)]'>>> tkinter.TkVersion8.6



