小部件未使用 Tkinter 填充整个框架

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

这是我的代码-

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()

这就是它产生的东西

enter image description here

框架有颜色的唯一原因是这样我可以清楚地看到它们。为什么按钮没有填满整个蓝框?尽管与其他框架具有相同的重量,但为什么蓝色框架更大?

python-3.x tkinter
1个回答
0
投票

默认情况下,

grid
只会使用足够的空间来适应小部件的自然尺寸。如果您希望扩展行或列以使用额外空间,则必须以这种方式显式配置它。

例如,如果您希望蓝框中的两行占据整个区域,请使用

rowconfigure

为其赋予权重 1
frame2.grid_rowconfigure((0,1), weight=1)

同样,如果您希望三列填充空间,请使用

columnconfigure
:

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