Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tkinter树视图列大小_Python_Python 3.x_Tkinter - Fatal编程技术网

Python tkinter树视图列大小

Python tkinter树视图列大小,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我在tkinter中有一个Treeview(在Linux上是Python 3.6,但在windows上也是如此),我用它来模拟一种电子表格布局。我的问题是,如果我运行下面的示例代码,并调整大小,比如说“column1”,那么随着“column1”变大,“column2”变小。但是,如果我向右拖出最后一列,滚动条将展开,现在我可以调整第1列的大小,而无需更改第2列的大小(而是整个树视图将展开)。然后,如果再次调整列1的大小,直到所有列都适合视图,则行为似乎恢复到原始状态 是什么导致了这种行为的改变

我在
tkinter
中有一个
Treeview
(在Linux上是Python 3.6,但在windows上也是如此),我用它来模拟一种电子表格布局。我的问题是,如果我运行下面的示例代码,并调整大小,比如说“column1”,那么随着“column1”变大,“column2”变小。但是,如果我向右拖出最后一列,滚动条将展开,现在我可以调整第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()

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)

谢谢因此
stretch=False
对我来说效果很好:它强制小部件进入我在OP中讨论过的“第二模式”。官方文档:仍然有点不清楚为什么在默认情况下,小部件有时会调整列的大小。但这就是生活。。。