簡體   English   中英

在Python Tkinter中使用網格布局拉伸框架

[英]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”,第二個有“一些長文本”。底部按鈕比頂部寬得多。

我需要做什么來獲得第一個按鈕來擴大第二個按鈕的大小?

如果您希望小部件在網格中排成一行,首先要確保它們具有相同的父級。 如果所有窗口小部件的大小相同或者您只使用一列,則這不是必需的。

您需要做的另一件事是給您的柱子增加重量。 您的代碼中發生的事情是窗口小部件正在擴展以填充列,但該列未擴展以填充主列。 如果你給它一個1的重量。 您需要執行類似inner_a.columnconfigure(1, weight=1) ,然后對inner_b執行inner_b

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM