Python 3 Tkinter - 使用网格创建覆盖100%宽度的文本小部件

时间:2014-12-23 04:20:21

标签: python text tkinter grid

我知道您可以使用Pack Geometry Manager轻松创建覆盖100%宽度的Tkinter Text小部件:

from tkinter import *
root = Tk()
textWidget = Text(root)
textWidget.pack(side=TOP, fill=X)
root.geometry('600x1000')
root.mainloop()

但我想知道,如何使用grid Geometry Manager和grid_columnconfigure完成同样的任务?

1 个答案:

答案 0 :(得分:5)

使用网格需要以下步骤:

  • 使用文本小部件的grid方法,为其提供行和列。在这种情况下 你可以使用0,0。
  • 还使用grid方法,定义您是否希望窗口小部件“粘贴” 它所给予的空间的两侧。在你的情况下,你可以给予 字符串“nsew”(北,南,东,西)。
  • 将窗口小部件所在的行配置为权重为1(一)。这样做 grid_rowconfigure。这将导致行垂直扩展以填充任何额外空间
  • 将窗口小部件所在的列配置为权重为1(一)。这样做 grid_columnconfigure。这将导致列水平扩展以填充 任何额外的空间。

请注意grid_rowconfiguregrid_columnconfigure是要调用的方法 包含文本小部件的小部件,而不是文本小部件本身。 grid方法是 调用文本小部件,因为您正在告诉文本小部件它应该放在哪里 本身就是它的父母。

您的代码如下所示:

from tkinter import *
root = Tk()
textWidget = Text(root)

textWidget.grid(row=0, column=0, sticky="nsew")
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)

root.geometry('600x1000')
root.mainloop()

当你有一个小部件来填充分配给它的所有空间时,我推荐pack只是因为你可以用一行代码而不是三行来完成所有工作。 pack非常适合此类问题。 grid更适合创建小部件网格,因为它的名称适用。话虽这么说,要么完全可以接受。您可以在同一程序中混合使用gridpack,但不能将它们用于共享父项的小部件。