这是我的代码-
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
root = tk.Tk()
root.title("Food shopping")
root.geometry('800x500')
root.columnconfigure(0, weight=1)
root.columnconfigure(1, weight=1)
# root.columnconfigure(2, weight=1)
root.rowconfigure(0, weight=1)
root.rowconfigure(1, weight=1)
# Blank space top left
frame1 = tk.Frame(root)
frame1.configure(bg='red')
frame1.grid(row=0, column=0, sticky='nswe', padx=5, pady=5)
# Frame containing the 4 buttons
frame2 = tk.Frame(root)
frame2.configure(bg='blue')
frame2.grid(row=0, column=1, sticky="nswe", padx=5, pady=5)
# Frame containing the first check boxes
frame3 = tk.Frame(root)
frame3.configure(bg='green')
frame3.grid(row=1, column=0, sticky="nswe", padx=5, pady=5)
entry_btn = ttk.Button(frame2, text="Add")
entry_btn.grid(row=0, column=0, sticky='we')
entry_btn2 = ttk.Button(frame2, text="Clear")
entry_btn2.grid(row=0, column=1, sticky='we')
entry_btn3 = ttk.Button(frame2, text="Continue")
entry_btn3.grid(row=0, column=2, sticky='we')
entry_btn4 = ttk.Button(frame2, text="Finish")
entry_btn4.grid(row=1, column=0, columnspan=3, sticky='we')
root.mainloop()
这就是它产生的东西
框架有颜色的唯一原因是这样我可以清楚地看到它们。为什么按钮没有填满整个蓝框?尽管与其他框架具有相同的重量,但为什么蓝色框架更大?
默认情况下,
grid
只会使用足够的空间来适应小部件的自然尺寸。如果您希望扩展行或列以使用额外空间,则必须以这种方式显式配置它。
例如,如果您希望蓝框中的两行占据整个区域,请使用
rowconfigure
为其赋予权重 1
frame2.grid_rowconfigure((0,1), weight=1)
同样,如果您希望三列填充空间,请使用
columnconfigure
:
frame2.grid_columnconfigure((0,1,2), weight=1)