【问题标题】:Python 3 Tkinter - Create Text Widget covering 100% Width with GridPython 3 Tkinter - 使用网格创建覆盖 100% 宽度的文本小部件
【发布时间】:2015-02-21 05:19:57
【问题描述】:

我知道您可以使用 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_columnconfigure 的网格几何管理器完成同样的任务?

【问题讨论】:

  • 你知道如何使用网格吗?你读过文档吗?你试过什么?
  • 我尝试使用带有网格的列配置来解决问题,但我不太了解如何使用它的文档。

标签: python text tkinter grid


【解决方案1】:

使用网格需要以下步骤:

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

请注意,grid_rowconfigure 和 grid_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 更适合创建小部件网格,正如它的名字一样。话虽如此,两者都是完全可以接受的。您可以在同一个程序中混合和匹配grid 和pack,但您不能将它们都用于共享一个共同父级的小部件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 2018-04-28
    • 2018-01-01
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    相关资源
    最近更新 更多