调整窗口大小时,我如何使每个角的 4 个框架占用相同的空间?

问题描述 投票:0回答:1

我想制作一个有 5 个框架的窗口,4 个在 2x2 网格中,一个在它们下面。即使调整窗口大小时,我如何让它们占用相同的空间?

我无法使框架扩展到中心并占用相等的空间。我也不确定如何在所有内容下放置第 5 帧。这是到目前为止的代码。

import tkinter as tk

window = tk.Tk()
window.geometry("500x500")

frame1 = tk.Frame(window,bg = 'red')
frame1.place(relx = 0, rely = 0, anchor = 'nw')
label1 = tk.Label(frame1, text = 'quadrant 2')
label1.grid(padx = 10, pady = 10)

frame2 = tk.Frame(window,bg = 'blue')
frame2.place(relx = 1, rely = 0, anchor = 'ne')
label2 = tk.Label(frame2, text = 'quadrant 1')
label2.grid(padx = 10, pady = 10)

frame3 = tk.Frame(window,bg = 'yellow')
frame3.place(relx = 0, rely = 1, anchor = 'sw')
label3 = tk.Label(frame3, text = 'quadrant 3')
label3.grid(padx = 10, pady = 10)

frame4 = tk.Frame(window,bg = 'green')
frame4.place(relx = 1, rely = 1, anchor = 'se')
label4 = tk.Label(frame4, text = 'quadrant 4')
label4.grid(padx = 10, pady = 10)

window.mainloop()

感谢您的帮助。

我尝试在每个角落放置框架并使用填充和扩展,但我不太了解。我还尝试使用网格和包在每个角落放置框架。

当我使用网格在角落放置框架时,第 1 象限位于第 0 行第 1 列,而第 2 象限位于第 0 行第 0 列,尽管位于同一行,但第 2 象限仍然显得较低。

pack 让我很困惑。它是如何包装的? idk。我尝试使用锚命令,但效果不错。

python tkinter resize autoresize
1个回答
0
投票

您可以使用

grid
将它们放在第 0 行和第 1 行以及第 0 列和第 1 列中。然后,您可以为这些行和列中的每一个赋予权重,以便为它们分配未使用的空间,

看起来像这样:

f1 = tk.Frame(root, …)
f2 = tk.Frame(root, …)
f3 = tk.Frame(root, …)
f4 = tk.Frame(root, …)

f1.grid(row=0, column=0, sticky=“nsew”)
f1.grid(row=0, column=1, sticky=“nsew”)
f1.grid(row=1, column=0, sticky=“nsew”)
f1.grid(row=1, column=1, sticky=“nsew”)

root.grid_rowconfigure((0,1), weight=1)
root.grid_columnconfigure((0,1), weight=1)
© www.soinside.com 2019 - 2024. All rights reserved.