Tkinter:框架不会扩展以使用 grid() 填充根小部件内的剩余空间

我一直在研究类似的线程,我唯一能理解的是建议使用方法expand选项pack(),我想知道是否可以扩展框架以用.grid()方法填充父小部件的可用空间?


import tkinter as tk


root = tk.Tk()

root.title('MSIV Preferences')

root.geometry('850x450')


frame = tk.Frame(root, bg='black')

frame.grid(column=0, row=0)

root.mainloop()


慕尼黑8549860
浏览 137回答 1
1回答

慕妹3242003

您需要做两件事。首先,您需要告诉网格让框架填充分配给它的空间,其次,您需要告诉网格将所有额外空间分配给包含框架的行和列。仅当您希望窗口小部件在调整窗口大小时继续填充空间时才需要执行第二步。第一个是使用记录的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 tkroot = 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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python