展开“文本”窗口小部件以填充Tkinter中的整个父框架

时间:2015-02-09 21:30:33

标签: python tkinter tk

我得到了这个Text小部件,我希望它能够使用网格几何管理器扩展并填充整个父级。

根据我见过的例子,这个示例程序应该可以工作,但是当它扩展窗口时,内容没有调整大小。

from Tkinter import *
root = Tk()

input_text_area = Text(root)
input_text_area.grid(row=1, column=0, columnspan=4, sticky=W+E)
input_text_area.configure(background='#4D4D4D')

root.mainloop()

感谢任何帮助

对于它的价值,我在Python 2.7(最新的2.x版本)中运行,并在PyCharm中编码,尽管我不认为IDE是相关的。

3 个答案:

答案 0 :(得分:14)

使用网格时,父级中的任何额外空间都会与" weight"成比例分配。一行和/或一列(即:重量为2的列的空间是重量为1的空间的两倍)。默认情况下,行和列的权重为0(零),这意味着不会给它们额外的空间。

您需要为窗口提供窗口小部件非零权重,以便在窗口增长时将任何额外空间分配给该列。

root.grid_columnconfigure(0, weight=1)

您还需要指定行的权重,如果您希望它在所有方向上增长,则需要指定粘性值N+S+E+W

答案 1 :(得分:6)

由于您的窗口只包含一个窗口小部件,并且您希望此窗口小部件填满整个窗口,因此使用pack geometry manager代替grid

会更容易
input_text_area.pack(expand=True, fill='both')

expand=True告诉Tkinter允许窗口小部件展开以填充几何主体中的任何额外空间。 fill='both'使小部件可以水平和垂直展开。

答案 2 :(得分:1)

from tkinter import *
root = Tk()

input_text_area = Text(root)
input_text_area.grid(row=0, column=0, columnspan=4, sticky=N+S+W+E)
input_text_area.configure(background='#4D4D4D')
root.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(0, weight=1)

root.mainloop()

不确定这是否是你想要的。 但这填满了整个屏幕。