2014-12-24 35 views
1

我正在嘗試在Tkinter中創建一個GUI。但是當我將任何框架關聯標籤時,其背景顏色消散。而我期望這個標籤的整個背景都是綠色的。當我將一個標籤與它關聯時,Tkinter框架背景消失

我的代碼粘貼下面

from Tkinter import * 
from time import * 

root = Tk() 
root.rowconfigure(1, weight=1) 
root.columnconfigure(1, weight=1) 

leftFrame = Frame(root, width = 200, height = 200, bg = 'green') 
leftFrame.grid(row = 1, column = 1) 

centerFrame = Frame(root, width = 200, height = 200, bg = 'black') 
centerFrame.grid(row = 1, column = 2) 

rightFrame = Frame(root, width = 200, height = 200, bg = 'blue') 
rightFrame.grid(row = 1, column = 3) 

b = Label(leftFrame, text = "Press me!", bg = 'green') 
b.pack(side = TOP, expand = YES) 

root.mainloop() 

回答

1

幀通常是「縮小以適合」自己的內容,除非有放置在框架上的約束。這是正常的,預期的,通常是可取的。所以,左邊的框架會要求它足夠寬以適應標籤,並且要足夠高以適應標籤。其他列中的框架因爲沒有子項,所以會是您請求的大小。

所以,你有一列想要和標籤一樣寬和高,還有兩列想要是200像素寬。你有一排想要足夠高以適應一切,這意味着它與最高的小部件一樣高,或200像素。這最終會在最左邊的列中留下額外的空間。

沒有指定任何選項,每行將與行中最高的小部件一樣高,在此情況下爲200像素。每一列將與最寬的小部件一樣寬。最左邊的列想要是框架的寬度,它本身只想和標籤一樣寬。所以,最左邊的列將只與標籤一樣寬。其他列將是200像素寬,因爲這是你告訴他們。

現在,您需要用綠框填充它所在的單元格。在您的情況下,您並未要求框架填充分配的空間,以便縮小以適合它。您需要將sticky選項添加到框架,以強制它「粘」到所給出空間的所有四個邊緣。

leftFrame.grid(row=1, column=0, sticky="nsew") 

當然,如果您打算在其中放置小部件,您也會遇到與其他幀相同的問題。

+0

謝謝,但仍然有一個問題。這將在垂直方向上擴展框架,但不會在200範圍內水平擴展。 – Rusty

+0

我不理解您的評論。你的問題提到沒有跨度。 –

+0

我的意思是leftFrame的寬度與Label的寬度相同。只有通過添加「nsew」選項才能更改高度。 – Rusty

0

實際的框架大小與它包含的小部件相同,所以一切綠色都是框架。其他一切都只是填充物,使其與其他框架相同的大小。要使框架填充整個可用空間,請使用「nsew」

哎呀,已經在下面回答了。我不知道你爲什麼要輸入時間,但在Tkinter環境中使用時間不是一個好主意。使用內置的「後」代替http://effbot.org/tkinterbook/widget.htm

from Tkinter import * 

root = Tk() 
root.rowconfigure(1, weight=1) 
root.columnconfigure(1, weight=1) 

leftFrame = Frame(root, width = 200, height = 200, bg = 'green') 
leftFrame.grid(row = 1, column = 1, sticky="nesw") 

centerFrame = Frame(root, width = 200, height = 200, bg = 'black') 
centerFrame.grid(row = 1, column = 2) 

rightFrame = Frame(root, width = 200, height = 200, bg = 'blue') 
rightFrame.grid(row = 1, column = 3) 

b = Label(leftFrame, text = "Press me!", bg = 'green') 
b.grid() 
root.mainloop() 
+0

謝謝,但仍然有一個問題。這會在垂直方向上擴展框架,但不會在200的範圍內水平擴展。 – Rusty

相關問題