2016-12-28 34 views
0

我想創建一個主框架,我應該能夠更改內容,而頁眉和頁腳應該保持不變。頁眉和頁腳比較薄。在Tkinter中創建GUI骨架

我可能應該這樣做3幀:header_frame,footer_frame和central_frame,正確[1]?我需要頁眉和頁腳大約需要10%和10%,而中間框架填補了其餘部分。

我應該爲該[2]打包還是網格?我認爲pack()在這種情況下更容易,對嗎?如果是這樣,我該怎麼做?或者可以通過「grid()」[3]來完成?但是,我會如何定位所有這3個框架:10%,80%爲中心,10%[4]?

而且,我發現我的的內容中央框架更容易使用grid()。我知道我不能在相同的元素中組合pack()和grid()。但是,我應該只能在中央框架內使用grid(),即使我使用pack()來創建3個框架的基本框架。它是正確的嗎?[5]

如果你能告訴我一個我試圖完成它的例子,將不勝感激。

回答

1

(1)是的。

(5)是的,裏面Frame可以使用grid()pack()

(4)可以使用weightgrid設置行大小。

#!/usr/bin/env python3 

import tkinter as tk 

root = tk.Tk() 
root.geometry('400x300') 

header = tk.Frame(root, bg='green') 
content = tk.Frame(root, bg='red') 
footer = tk.Frame(root, bg='green') 

root.columnconfigure(0, weight=1) # 100% 

root.rowconfigure(0, weight=1) # 10% 
root.rowconfigure(1, weight=8) # 80% 
root.rowconfigure(2, weight=1) # 10% 

header.grid(row=0, sticky='news') 
content.grid(row=1, sticky='news') 
footer.grid(row=2, sticky='news') 

root.mainloop() 

enter image description here

如果頁眉和頁腳具有一定的高度,然後

可以使用sidepack頁腳底部

#!/usr/bin/env python3 

import tkinter as tk 

root = tk.Tk() 
root.geometry('400x300') 

header = tk.Frame(root, bg='green', height=30) 
content = tk.Frame(root, bg='red') 
footer = tk.Frame(root, bg='green', height=30) 

header.pack(fill='both') #, side='top') 
content.pack(fill='both') 
footer.pack(fill='both', side='bottom') 

root.mainloop() 

expand內容使用的休息空間

#!/usr/bin/env python3 

import tkinter as tk 

root = tk.Tk() 
root.geometry('400x300') 

header = tk.Frame(root, bg='green', height=30) 
content = tk.Frame(root, bg='red') 
footer = tk.Frame(root, bg='green', height=30) 

header.pack(fill='both') 
content.pack(fill='both', expand=True) 
footer.pack(fill='both') 

root.mainloop() 
+0

感謝................. – Karim

+0

當我創造一切通過網格中的所有3幀像你的第一個例子,然後我試圖通過包添加一個控制到中央框架,它說這是不允許的。爲什麼不?我不能在中央框架內使用包裝嗎? – Karim

+0

你必須顯示代碼和錯誤信息 - 通常你不能在一個窗口或框架中使用'grid()'和'pack()'和'place()',但是如果你使用grid() )*外*幀和'pack()* *內*幀。 – furas