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

时间:2015-02-06 00:24:14

标签: python tkinter treeview

我在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上100%工作,所以我做错了什么,或者是我所能期待的?

2 个答案:

答案 0 :(得分:0)

column()的stretch参数在Python ttk中为True / False。在OSX上,“stretch = False”对我有用。 见https://docs.python.org/2/library/ttk.html#ttk.Treeview.column

答案 1 :(得分:0)

要禁用列调整大小,您需要创建一个 def 以在它位于分隔符 x 和 y 中时中断单击。看例子:

def handle_click(event):
    if treeview.identify_region(event.x, event.y) == "separator":
        return "break"
    
    #...


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

希望能帮到所有需要解决的人。