我正在嘗試創建三個框架:頂部、中間和底部。我成功地將小部件添加到我的頂部和底部框架中,并按照我想要的方式定位它們。但是,我只是想在中間框架中添加兩個條目小部件,它們將跨越框架/窗口的整個寬度。由于頂部和底部框架中所有小部件的代碼長度,我將僅包含一段代碼,說明如何配置我的窗口和框架:root = Tk()root.resizable(False, False)top_frame = Frame(root)middle_frame = Frame(root)bottom_frame = Frame(root)# I think this block is irrelavant to the question, but including it anyway just incaserows = 0while rows < 36: top_frame.rowconfigure(rows, weight=1) top_frame.columnconfigure(rows, weight=1) bottom_frame.rowconfigure(rows, weight=1) bottom_frame.columnconfigure(rows, weight=1) rows += 1top_frame.grid(row=0, column=0)middle_frame.grid(row=1, column=0)bottom_frame.grid(row=2, column=0)這是我用于兩個條目小部件的代碼:entry_1 = Entry(middle_frame)entry_2 = Entry(middle_frame)entry_1.grid(row=0, column=0, sticky=E+W)entry_2.grid(row=1, column=0, sticky=E+W)但是,它們只是粘在中間框架的中心。我嘗試了許多解決方案,但似乎沒有任何改變這些條目小部件在框架內的外觀 - 始終居中,從不改變大小。我什至嘗試將它們打包并將它們的填充設置為 X。我可能忽略了一些非常簡單的東西,但我無法弄清楚。
1 回答

慕絲7291255
TA貢獻1859條經驗 獲得超6個贊
問題的根源在于中間框架未配置為填充窗口的整個寬度,因此內部的小部件不會填充窗口的整個寬度。
第一步是使用sticky
中間窗口上的選項:
middle_frame.grid(row=1, column=0, sticky="ew")
接下來,您還沒有告訴grid
如何處理根窗口中的額外空間。根據經驗,任何grid
用于管理其子級的小部件都應至少有一行和一列的權重大于零。
要讓中間框架占據窗口的整個寬度,請給它所在的列賦予非零權重:
root.grid_columnconfigure(0, weight=1)
中間框架中也存在同樣的問題:您沒有指導grid
如何處理額外的空間。根據經驗法則,我們需要在中間框架內給第 0 列賦予權重:
middle_frame.grid_columnconfigure(0, weight=1)
這將允許中間框架中的條目小部件填充中間框架,并且我們已經配置應用程序以使中間框架填充窗口的整個寬度。
添加回答
舉報
0/150
提交
取消