2012-06-27 52 views
0

我有以下代碼段(未完成),我想將幾​​個框架包含在ttk'Notebook'的單個選項卡中。單個選項卡中的多個框架ttk.Notebook

win1 = Tk()  
n = ttk.Notebook(win1) 

choice_frame = ttk.Frame(n, style="Black.TLabel") 
choice_frame.grid(row=2, column=1, sticky="N,S,E,W", padx=1, pady=1) 
choice_frame.grid_columnconfigure(0, weight=3) 
choice_frame.grid_rowconfigure(0, weight=1) 

frame_text = ttk.Frame(n, style="Black.TLabel") 
frame_text.grid(row=0, column=0, sticky = "N") 
frame_text.grid_columnconfigure(0, weight=3) 
frame_text.grid_rowconfigure(0, weight=1) 

frame_table = ttk.Frame(n, style="Black.TLabel") 
frame_table.grid(row=2, column=0, padx=1, pady=1, sticky= " N, S, E, W ") 
frame_table.grid_columnconfigure(0, weight=3) 
frame_table.grid_rowconfigure(0, weight=1) 

n.add(frame_table, text="One") # Would like same tab not two separate ones 
n.add(choice_frame, text="One") 
n.grid(sticky="N") 

我也想知道是否有一種方法,允許每個維度在窗口被拖出和最大化時自動調整。我以前嘗試過:

frame_table.grid_propagate(0) 

但是,這似乎不允許高度以及寬度尺寸堅持。我希望我的'桌子'位於窗戶的中央,但要根據窗戶大小進行調整。

謝謝你的幫助!

+0

你是什麼意思,「在中心,但調整窗口大小」。這些看起來是矛盾的 - 你想要它在中心嗎?還是你想讓它填滿框架? –

+0

我希望所有的小工具都能在桌子周圍放一些邊框區域,所以窗戶並沒有完全打包。然後,我希望整個窗口展開時調整它的大小。 – user2063

回答

1

grid_propagate不是您的任何問題的解決方案。

每個選項卡只能包含一個框架,但該框架可以包含任何你想要的。因此,爲該選項卡創建一個容器框架,然後將所有其他框架放入容器框架中。這是Frame類存在的主要原因之一 - 構建便於佈局的小部件容器。

至於調整大小,問題可能是您沒有爲主窗口的行和列添加權重。雖然它也可能與您使用grid將框架放入筆記本中的事實有關;您不能使用grid將項目放入筆記本中。

+0

我將如何創建一個框架並將其他框架添加到它?我不知道我能做到這一點(我是一個完全的初學者),我已經閱讀了一些關於網格和包的評論,但我仍然不明白如何在不衝突的情況下使用它們。非常非常簡單的解釋需要在這裏,我提前道歉,但非常感謝你的幫助! – user2063

+0

我試着創建root = Tk(),然後win1 = Frame(root),win1.grid(),但它不起作用,我什麼也得不到。 – user2063