2013-08-03 66 views
0

我創建了一個LabelFrame小部件。它在開始一個不錯的大小:如何在插入空標籤時防止Tkinter labelframe大小發生變化

import Tkinter 
form = Tkinter.Tk() 

errorArea = Tkinter.LabelFrame(form, text=" Errors ", width=250, height=80) 
errorArea.grid(row=2, column=0, columnspan=2, sticky="E", \ 
      padx=5, pady=0, ipadx=0, ipady=0) 

enter image description here

但根據插入的字符串時,我在其中插入一個空字符串,errorArea物件的尺寸調整:

errorMessage = Tkinter.Label(errorArea, text="") 
errorMessage.grid(row=0, column=0, padx=5, pady=2, sticky='W') 

enter image description here

我該如何給errorArea小部件一個固定的大小,以便它的大小不會改變ac按照插入其中的標籤?

回答

2

這個問題總是令我感興趣。我找到解決它的方法之一是使用place方法而不是grid

import Tkinter 

form = Tkinter.Tk() 

errorArea = Tkinter.LabelFrame(form, text=" Errors ", width=250, height=80) 
errorArea.grid(row=2, column=0, columnspan=2, sticky="E", \ 
      padx=5, pady=0, ipadx=0, ipady=0) 

errorMessage = Tkinter.Label(errorArea, text="") 

# 1) 'x' and 'y' are the x and y coordinates inside 'errorArea' 
# 2) 'place' uses 'anchor' instead of 'sticky' 
# 3) There is no need for 'padx' and 'pady' with 'place' 
# since you can specify the exact coordinates 
errorMessage.place(x=10, y=10, anchor="w") 

form.mainloop() 

有了這個,標籤被放置在窗口而不縮小labelframe。

+1

@Downvoter:你能給出一個你downvoted的理由嗎?我關心我的工作質量。因此,如果您發現我的代碼存在問題,請告訴我這是什麼,以便我可以修復我的帖子或更好地解釋我所做的。 – iCodez

1

如果您使用粘滯值將小部件粘貼到其單元格的所有四邊而不僅僅是一邊,那麼當您將小標籤小部件放入其中時,它不會縮小。

另一個選項是調用errorArea.grid_propagate(False),它告訴網格區域不縮小或擴大以適應其內容。這通常會導致不希望的調整行爲,或者至少要求您做一些額外的工作才能獲得正確的調整行爲。

+0

它沒有工作,當我在errorArea中使用「WENS」時,它會混淆窗體的結構。 – alwbtc

+0

如果您可以向我們展示更多代碼,我們可以修復佈局問題。 –

相關問題