Tkinter 提供了一個全面的網格幾何管理器,用於在視窗內組織小部件。網格的一個關鍵屬性是「權重」選項,它控制容器中有剩餘空間時列和行如何擴展。
預設情況下,每個網格單元格的權重為 0,表示它應該不會增長超過其初始大小。但是,如果有額外空間可用,則為行或列指派非零權重會觸發其擴充。
權重實際示範
請考慮以下程式碼:
import tkinter as tk root = tk.Tk() root.geometry("200x100") f1 = tk.Frame(root, background="bisque", width=10, height=100) f2 = tk.Frame(root, background="pink", width=10, height=100) f1.grid(row=0, column=0, sticky="nsew") f2.grid(row=0, column=1, sticky="nsew") root.grid_columnconfigure(0, weight=0) root.grid_columnconfigure(1, weight=0) root.mainloop()
此程式碼建立一個帶有兩個並排放置的框架f1 和f2的視窗。由於沒有對列套用權重,所以任何可用空間都不會被使用。
import tkinter as tk root = tk.Tk() root.geometry("200x100") f1 = tk.Frame(root, background="bisque", width=10, height=100) f2 = tk.Frame(root, background="pink", width=10, height=100) f1.grid(row=0, column=0, sticky="nsew") f2.grid(row=0, column=1, sticky="nsew") root.grid_columnconfigure(0, weight=1) root.mainloop()
將權重加到第一列可以確保當視窗放大時,額外的空間將分配給第一列列。
import tkinter as tk root = tk.Tk() root.geometry("200x100") f1 = tk.Frame(root, background="bisque", width=10, height=100) f2 = tk.Frame(root, background="pink", width=10, height=100) f1.grid(row=0, column=0, sticky="nsew") f2.grid(row=0, column=1, sticky="nsew") root.grid_columnconfigure(0, weight=1) root.grid_columnconfigure(1, weight=3) root.mainloop()
為列分配不同的權重可以按比例分配多餘空間。在此範例中,第二列的權重是第一列的三倍,從而形成 1:3 的比例。
權重的威力在於其對視窗大小調整的動態反應。當視窗擴展時,小部件會適應可用空間,同時保持其相對比例。這種靈活性對於創建響應靈敏且適應性強的圖形使用者介面至關重要。
以上是權重在 Tkinter 的網格幾何中如何發揮作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!