Python tkinter 树视图没有按预期缩小

问题描述 投票:0回答:1

我在左侧的框架中有一个树视图元素,它与右侧的另一个元素共享空间,在这个测试用例中,它是一个按钮。当窗口大小调整为较小尺寸时,树视图不会缩小,但按钮会缩小。当按钮不再可见时,树视图才开始缩小。看起来这些列有一个固定的最小尺寸。

这是一个测试程序,它显示了问题:

from tkinter import *
from tkinter import ttk

root = Tk()
root.geometry("400x200")

upper_container = Frame(root)
upper_container.pack(fill="x")

left_tree = ttk.Treeview(upper_container, column=("c1", "c2"))
left_tree.column("# 0", anchor=CENTER)
left_tree.heading("# 0", text="ID")
left_tree.column("# 1", anchor=CENTER)
left_tree.heading("# 1", text="Test")
left_tree.pack(side=LEFT, fill="x", expand=True)

right_button = ttk.Button(upper_container, text="Button")
right_button.pack(side=LEFT, fill="x", expand=True)

root.mainloop()

我的预期行为是,两个元素都开始缩小。我尝试使用 .grid 而不是 .pack,但行为保持不变。也许我错过了一些东西。

python tkinter treeview
1个回答
0
投票

使用网格而不是包来更好地控制布局。 设置容器中的列权重,以使 Treeview 和按钮按比例调整大小。
使用 Sticky="nsew" 使小部件向各个方向扩展。 设置树视图列允许的最小宽度。

缩小。

from tkinter import *
from tkinter import ttk

root = Tk()
root.geometry("400x200")

upper_container = Frame(root)
upper_container.pack(fill="both", expand=True)

upper_container.columnconfigure(0, weight=3)
upper_container.columnconfigure(1, weight=1)

left_tree = ttk.Treeview(upper_container, columns=("c1", "c2"), show="headings")
left_tree.heading("c1", text="ID")
left_tree.heading("c2", text="Test")
left_tree.column("c1", anchor=CENTER, width=50, minwidth=50)
left_tree.column("c2", anchor=CENTER, width=100, minwidth=50)
left_tree.grid(row=0, column=0, sticky="nsew")

right_button = ttk.Button(upper_container, text="Button")
right_button.grid(row=0, column=1, sticky="nsew", padx=(5, 0))

root.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.