1 回答

TA貢獻1824條經(jīng)驗 獲得超6個贊
您需要做兩件事。首先,您需要告訴網(wǎng)格讓框架填充分配給它的空間,其次,您需要告訴網(wǎng)格將所有額外空間分配給包含框架的行和列。僅當(dāng)您希望窗口小部件在調(diào)整窗口大小時繼續(xù)填充空間時才需要執(zhí)行第二步。
第一個是使用記錄的sticky參數(shù)完成的,該參數(shù)告訴小部件“粘”到分配給它的空間的一側(cè)或多側(cè)。它需要一串羅盤方向。例如,“nsew”代表“北東南西”。這樣,框架將粘在分配給它的空間的所有四個邊上。
frame.grid(column=0, row=0, sticky="nsew")
第二步是告訴grid將其擁有的任何額外空間分配給包含框架的行和列。您可以通過將 a 分配weight給一個或多個行和列來實現(xiàn)這一點。grid將分配相對于 的額外空間weight。例如,一列權(quán)重為 2,一列權(quán)重為 1,一列權(quán)重為 0(默認(rèn)),對于每三個像素的額外空間,兩個將進入一列,一列將進入另一列。
根據(jù)經(jīng)驗,使用時應(yīng)grid始終為至少一行和一列賦予正權(quán)重。
在你的情況下,它會是這樣的:
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()
添加回答
舉報