【问题标题】:How to get .grid_columnconfigure() working inside Frame?如何让 .grid_columnconfigure() 在 Frame 内工作?
【发布时间】:2019-07-23 16:02:42
【问题描述】:

我想在 python 中使用 grid-Method 和 grid_columnconfigure/grid_rowconfigure 创建一个带有 tkinter 的 GUI。 不幸的是,这在框架内不起作用。 我怎样才能得到这份工作?

from tkinter import *

master = Tk()
master.state('zoomed')
f = Frame(master, width=800, height=400)

Label1 = Label(f, text='Label 1')
Label2 = Label(f, text='Label 2')

f.grid_columnconfigure(0, weight=1)
f.grid_columnconfigure(2, weight=1)
f.grid_columnconfigure(4, weight=1)

Label1.grid(row=0, column=1)
Label2.grid(row=0, column=3)

f.pack()

master.mainloop()

其他问题: 我得到了很好的答案,pack-Manager 一切正常。 但是如果使用 grid-Manager,我该怎么做呢?

【问题讨论】:

    标签: python tkinter grid


    【解决方案1】:

    grid_columnconfigure 工作正常。问题是您的框架默认情况下会将其尺寸设置为尽可能小的尺寸以适合标签。由于空列没有大小,框架的宽度刚好可以容纳两个标签。

    如果您在开发过程中为frame 赋予独特的颜色,这将很容易可视化。有时也有助于为框架提供视觉边框,以便您可以看到它的边界。

    虽然我不知道你的最终目标是什么,但如果你让框架填满整个窗口,你可以看到列之间的空间:

    f.pack(fill="both", expand=True)
    

    如果你想使用grid 而不是pack,你必须做更多的工作。简而言之,将框架放在第 0 行第 0 列,并为该行和列赋予非零权重,以便网格将所有未使用的空间分配给该行和列。

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

    如果要强制窗口为特定大小,可以使用主窗口的geometry方法:

    master.geometry("800x400")
    

    【讨论】:

      猜你喜欢
      • 2020-11-08
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      • 1970-01-01
      • 2011-04-28
      • 2023-02-17
      相关资源
      最近更新 更多