python-3.x - 在 tkinter 和 python 中嵌套网格和框架

标签 python-3.x tkinter

我正在尝试在更大的网格结构中的框架内设置一个网格。我试图将其提炼为问题的最简单版本。

from tkinter import Tk, Frame, Label, Entry

root = Tk()
root.geometry('800x800')


frame1 = Frame(root, width=400, height=400, background="Blue")
frame2 = Frame(root, width=400, height=400, background="Red")

frame1.grid(row=0, column=0)
frame2.grid(row=1, column=1)

label1 = Label(frame1,text='Label1')
label1.grid()

标签不是将标签放置在框架 1 内,而是替换整个网格中的框架:

Sample output

我看过其他示例,但我无法确定为什么它们有效,而我的却无效。

最佳答案

根据 jasonharper 的观察,框架会自动调整自身大小,并发布了类似的问题 here ,我能够更新代码。

from tkinter import Tk, Frame, Label

root = Tk()
root.geometry('800x800')

root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(1, weight=1)
root.grid_columnconfigure(1, weight=1)

frame1 = Frame(root, background="Blue")
frame2 = Frame(root, background="Red")

frame1.grid(row=0, column=0, sticky="nsew")
frame2.grid(row=1, column=1, sticky="nsew")


label1 = Label(frame1,text='Label1')
label1.grid()

我对代码所做的更改是:

  • 我从 Frame 实例中删除了高度和宽度参数,因为它们无论如何都没有执行任何操作。
  • 为根(框架的容器)的行和列添加了权重,以使可用空间中的框架均匀分布
  • 将“粘性”参数添加到框架的网格位置,以便框架占据分配给它们的所有空间。

结果:

New result

关于python-3.x - 在 tkinter 和 python 中嵌套网格和框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46209627/

相关文章:

Python tkinter 按钮在按下时返回黑色

python-3.x - 使用Geopandas,如何通过采样方法在每个多边形中随机选择5个点

python - 在 Python 中使用 matplotlib 在 semilogy plot 上防止轴采用科学记数法(10 的幂)

python - 对 Python 3 中的多个项目使用相同的字符串格式

python - 错误?无法弄清楚

python - 有没有办法在 Mac 上的应用程序窗口内显示菜单栏?

Python tkinter 之后

python - 获取目录后更新文件路径

python - 装饰器:理解为什么它不刷新局部变量

python-3.x - Python 3.6.0 的 Pygame 安装