如何在Treeview小部件中禁用列调整大小?

5

我在Python中设置了一个相当基本的Treeview

self.tv = ttk.Treeview(top_frame, columns=("#","ID","Name"), selectmode = "browse" )

self.tv.heading('#1', text='#', anchor=W)
self.tv.heading('#2', text='ID', anchor=W)
self.tv.heading('#3', text='Name', anchor=W)

self.tv.column('#1',minwidth=70, width = 70, stretch=NO)
self.tv.column('#2', minwidth = 240, width = 240, stretch=NO)
self.tv.column('#3', minwidth=260, width = 260, stretch=NO)
self.tv.column('#0', minwidth=0, width=0, stretch=NO)

我遇到的问题是列可以调整大小,从而使得树形视图要么比其容器更宽,要么更窄。这两种情况都破坏了整体的美观。

根据我的阅读,“stretch = NO”应该禁用此功能,但实际并未禁用。我正在使用Python 2.7.9在Mac上测试GUI界面。我知道某些小部件在Mac上可能无法正常工作,所以我是做错了什么还是这就是我能期望的全部呢?


1
(对于未来的读者)可以像我在这个答案中所概述的那样,在树形视图分隔符上捕获和阻止<Button-1>事件。 - jedwards
2个回答

1
为了禁用列的调整大小,您需要创建一个函数来在分隔符的x和y位置时中断单击。请参见示例:
def handle_click(event):
    if treeview.identify_region(event.x, event.y) == "separator":
        return "break"
    
    #...


treeview.bind('<Button-1>', handle_click)

我希望能够帮助所有需要解决问题的人。


0

无法在 Mac 上进行测试,但这不应该解决问题,因为该选项仅与树视图调整大小相关,而与用户调整列的大小无关。相关文档链接甚至也是如此说的。 - ProblemsLoop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接