[英]Stretching frames using grid layout in Python Tkinter
我正在嘗試使用Python 2.6.7與Tkinter一起工作。 我希望下面的代碼可以將第一個按鈕拉伸到第二個按鈕的寬度,但是這兩個按鈕只有它們需要的寬度才能適合它們的文本。
#!/usr/bin/python
from Tkinter import *
win = Frame()
win.grid(sticky=N+S+E+W)
inner_a = Frame(win)
inner_a.grid(row=0, column=0, sticky=N+E+W)
inner_b = Frame(win)
inner_b.grid(row=1, column=0, sticky=S+E+W)
Button(inner_a, text='1').grid(row=0, column=0, sticky=E+W)
Button(inner_b, text='Some long text').grid(row=0, column=0, sticky=E+W)
win.mainloop()
根據我的理解, win
的單列將擴展到它包含的最大內容的寬度,即inner_b
的寬度,然后是inner_a
的寬度,以及第一個按鈕的寬度,將是第二個按鈕的寬度。
實際上,下面會發生什么; 第一個按鈕的寬度足以包含“1”,而不是第二個按鈕的寬度。
我需要做什么來獲得第一個按鈕來擴大第二個按鈕的大小?
如果您希望小部件在網格中排成一行,首先要確保它們具有相同的父級。 如果所有窗口小部件的大小相同或者您只使用一列,則這不是必需的。
您需要做的另一件事是給您的柱子增加重量。 您的代碼中發生的事情是窗口小部件正在擴展以填充列,但該列未擴展以填充主列。 如果你給它一個1的重量。 您需要執行類似inner_a.columnconfigure(1, weight=1)
,然后對inner_b
執行inner_b
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.