1 回答
TA贡献1824条经验 获得超6个赞
您需要做两件事。首先,您需要告诉网格让框架填充分配给它的空间,其次,您需要告诉网格将所有额外空间分配给包含框架的行和列。仅当您希望窗口小部件在调整窗口大小时继续填充空间时才需要执行第二步。
第一个是使用记录的sticky参数完成的,该参数告诉小部件“粘”到分配给它的空间的一侧或多侧。它需要一串罗盘方向。例如,“nsew”代表“北东南西”。这样,框架将粘在分配给它的空间的所有四个边上。
frame.grid(column=0, row=0, sticky="nsew")
第二步是告诉grid将其拥有的任何额外空间分配给包含框架的行和列。您可以通过将 a 分配weight给一个或多个行和列来实现这一点。grid将分配相对于 的额外空间weight。例如,一列权重为 2,一列权重为 1,一列权重为 0(默认),对于每三个像素的额外空间,两个将进入一列,一列将进入另一列。
根据经验,使用时应grid始终为至少一行和一列赋予正权重。
在你的情况下,它会是这样的:
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)
这是完整的程序:
import tkinter as tk
root = tk.Tk()
root.title('MSIV Preferences')
root.geometry('850x450')
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)
frame = tk.Frame(root, bg='black')
frame.grid(column=0, row=0, sticky="nsew")
root.mainloop()
添加回答
举报