展开文本小部件以填充 Tkinter 中的整个父框架
Expand Text widget to fill the entire parent Frame in Tkinter
我得到了这个 Text
小部件,我希望它使用网格几何管理器扩展并填充其整个父级。
根据我看到的例子,这个示例程序应该可以,可惜它没有,当扩展window时,内容没有调整大小。
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 是相关的。
使用网格时,父级中任何额外的 space 都按比例分配给行的 "weight" and/or 列(即:权重为 2 的列得到space 是权重为 1 的两倍)。默认情况下,行和列的权重为 0(零),这意味着没有额外的 space 被赋予它们。
您需要为小部件的列赋予非零权重,以便在 window 增长时将任何额外的 space 分配给该列。
root.grid_columnconfigure(0, weight=1)
您还需要为该行指定一个权重,如果您希望它在所有方向上增长,则需要指定一个粘性值 N+S+E+W
。
由于您的 window 只包含一个小部件,而您希望这个小部件填充整个 window,因此使用 pack
geometry manager 比 grid
更容易
input_text_area.pack(expand=True, fill='both')
expand=True
告诉 Tkinter 允许小部件扩展以填充几何母版中的任何额外 space。 fill='both'
使小部件能够水平和垂直展开。
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()
不确定这是否是您想要的。
但这会填满整个屏幕。
我得到了这个 Text
小部件,我希望它使用网格几何管理器扩展并填充其整个父级。
根据我看到的例子,这个示例程序应该可以,可惜它没有,当扩展window时,内容没有调整大小。
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 是相关的。
使用网格时,父级中任何额外的 space 都按比例分配给行的 "weight" and/or 列(即:权重为 2 的列得到space 是权重为 1 的两倍)。默认情况下,行和列的权重为 0(零),这意味着没有额外的 space 被赋予它们。
您需要为小部件的列赋予非零权重,以便在 window 增长时将任何额外的 space 分配给该列。
root.grid_columnconfigure(0, weight=1)
您还需要为该行指定一个权重,如果您希望它在所有方向上增长,则需要指定一个粘性值 N+S+E+W
。
由于您的 window 只包含一个小部件,而您希望这个小部件填充整个 window,因此使用 pack
geometry manager 比 grid
更容易
input_text_area.pack(expand=True, fill='both')
expand=True
告诉 Tkinter 允许小部件扩展以填充几何母版中的任何额外 space。 fill='both'
使小部件能够水平和垂直展开。
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()
不确定这是否是您想要的。 但这会填满整个屏幕。