调整网格大小以适应 tkinter window

Resisze grid to fit tkinter window

嘿,所以我正在尝试掌握 tkinter,这样我就可以在我的程序中充分使用它,但是我正在努力使用几何管理器网格。

我想让我的程序根据窗口的大小调整网格的大小,有什么办法可以做到这一点吗?到目前为止,这是我的代码:

import tkinter
import time
import random
import sqlite3
window=tkinter.Tk()
window.title("Phone Book")
window.wm_iconbitmap('favicon (2).ico')
window.geometry("300x400")

entlbl1=tkinter.Label(window, text ="Add A Contact", font=("Helvetica", 23))
entlbl2=tkinter.Label(window, text ="Name:", font=("Helvetica", 16))
entlbl3=tkinter.Label(window, text ="Phone:", font=("Helvetica", 16))
entlbl4=tkinter.Label(window, text ="E-Mail:", font=("Helvetica", 16))
entbox1=tkinter.Entry(window)
entbox2=tkinter.Entry(window)
entbox3=tkinter.Entry(window)
entbtn1=tkinter.Button(window, text = "Add")
entbtn2=tkinter.Button(window, text = "Menu")
blanklbl=tkinter.Label(window)

entlbl1.grid(row=0,columnspan=4)
entlbl2.grid(row=1,sticky="w")
entlbl3.grid(row=2,sticky="w")
entlbl4.grid(row=3,sticky="w")
entbox1.grid(row=1, column=1)
entbox2.grid(row=2, column=1)
entbox3.grid(row=3, column=1)
entbtn1.grid(row=5,columnspan=2,sticky="WE")
entbtn2.grid(row=6,columnspan=2, sticky="WE")
blanklbl.grid(row=4)

当网格管理的 window 中有额外的 space 时,它会将额外的 space 分配给具有非零 "weight" 的行和列。要让您的行和列展开,请给它们一个非零权重。

for row in range(7):
    window.grid_rowconfigure(row, weight=1)
for col in range(3):
    window.grid_columnconfigure(col, weight=1)

当然,请根据您实际使用的行数和列数进行调整。您可以赋予不同的权重,使某些行或列比其他行或列增长得更多。例如,权重为 3 的列比权重为 1 的列增长速度快 3 倍。