【问题标题】:Python tkinter treeview column sizesPython tkinter 树视图列大小
【发布时间】:2017-06-02 14:12:19
【问题描述】:

我在tkinter 中有一个Treeview(Linux 上的 Python 3.6,但在 Windows 上也是如此),我用它来模拟一种电子表格布局。我的问题是,如果我运行下面的示例代码并调整大小说“第 1 列”,那么随着“第 1 列”变大,“第 2 列”变小。但是,如果我将 final 列拖到右侧,滚动条会展开,现在我可以调整第 1 列的大小而不改变第 2 列的大小(而不是整个树视图展开)。如果您随后再次调整第 1 列的大小,直到所有列都适合视图,则行为似乎会恢复到原始状态。

是什么导致了这种行为变化?两者,我怎样才能阻止它,我怎样才能确保它是默认的?

最小的工作示例:

import tkinter as tk
import tkinter.ttk as ttk

root = tk.Tk()
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)

tree = ttk.Treeview(root)
tree["show"] = "headings"
tree["columns"] = list(range(3))
for i in range(3):
    tree.heading(i, text="Column {}".format(i))

for i in range(5):
    tree.insert('', "end", i)

tree.grid(row=0, column=0, sticky=(tk.N, tk.S, tk.E, tk.W))
xs = ttk.Scrollbar(root, orient=tk.HORIZONTAL, command=tree.xview)
tree["xscrollcommand"] = xs.set
xs.grid(row=1, column=0, sticky=(tk.E, tk.W))

root.mainloop()

【问题讨论】:

    标签: python python-3.x tkinter


    【解决方案1】:

    您对Treeview 的最佳控制是使用列的stretch 属性。如果你让所有列的拉伸和最小宽度属性。

    for i in range(3):
        tree.column('#' + str(i), minwidth=300, stretch=0)
        tree.heading(i, text="Column {}".format(i))
    tree.column('#0', stretch=0)
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-03
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 2018-02-13
    相关资源
    最近更新 更多