2013-05-09 88 views
0

有幾天,我試圖與Tkinter設置一個簡單的應用程序,我有一些問題可以選擇在我的框架和小部件包,網格之間進行選擇。Python Tkinter佈局管理與網格

這是我的應用程序的樣機。 我決定刪除兩個按鈕「Générer」,所以不要留意這一點。

http://www.gilawhost.com/images/taajvonq.png

我有3個幀: frameMatrix(對於複選框),frameImage(用於閃存代碼)和有了FrameLink爲底部。

這些框架是用網格實現的。對於爲例的鏈接部分(底部),我有這樣的事情:

labelLink = LabelFrame(frameLink, text='Mini Lien', padx=5, pady=5) 
labelMiniLien = Label(frameLink, text = "http://minilien.fr/").grid(row=0, column=0) 
entryLink = Entry(frameLink, text=self.flashcode.lien).grid(row=0, column=1) 
buttonLink = Button(frameLink, text="Suivre le lien").grid(row=0, column=2) 

不過,我不知道如何把我的3幀一起。 我的主框架是

self.frame=Frame(root) 

我試圖把我的幀像下面

frameMatrix=Frame(self.frame).grid(row=0, column=0) 
frameImage=Frame(self.frame).grid(row=0, column=1) 
frameLink=Frame(self.frame).grid(row=1, column=0, columnspan=2) 

如果你能幫助我,我試了別人的東西,但沒有什麼是正確的 有了上面的代碼中,如果每個幀的網格相同,則幀重疊。

感謝

回答

1

最簡單的IMO是使用包。包裝對於這種佈局來說非常完美,在這種佈局中,您可以使用填充整個區域的邊框。這也是更好的(而且可能更容易)來分隔構件佈局控件創建)

例如:

frameLine = Frame(...) 
frameMatrix = Frame(...) 
frameImage = Frame(...) 
... 
frameLink.pack(side="bottom", fill="x") 
frameMatrix.pack(side="left", fill="both") 
frameImage.pack(side="right", fill="both") 

你可能需要添加expand=True到其中一個或多個部件,這取決於什麼樣的調整你想要的行爲。

+0

非常感謝!你的迴應是完美的,我的問題解決了。還有一件事,LabelFrame小部件是否像其他任何工作一樣工作?我必須將它添加到我的網格還是可以打包?因爲它沒有顯示。 – 2013-05-09 12:33:49

+0

@ Loric-:它和普通的框架完全一樣。 – 2013-05-09 17:38:57

0

gridpackplace回報None

frameMatrix=Frame(self.frame).grid(row=0, column=0)    # frameMatrix is None 
frameImage=Frame(self.frame).grid(row=0, column=1)    # frameImage is None 
frameLink=Frame(self.frame).grid(row=1, column=0, columnspan=2) # frameLink is None 

應該是:

frameMatrix=Frame(self.frame) 
frameImage=Frame(self.frame) 
frameLink=Frame(self.frame) 
frameMatrix.grid(row=0, column=0) 
frameImage.grid(row=0, column=1) 
frameLink.grid(row=1, column=0, columnspan=2) 

而且不要忘了buttonLinkentryLink,...