1

我有以下代码部分(不完整),我想在 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)

但这似乎不允许高度和宽度尺寸保持不变。我希望我的“桌子”位于窗口的中心,但可以根据窗口大小进行调整。

感谢您的帮助!

4

1 回答 1

1

grid_propagate不能解决您的任何问题。

每个选项卡只能包含一个框架,但该单个框架可以包含您想要的任何内容。因此,为选项卡创建一个容器框架,然后将所有其他框架放入容器框架中。这是该类存在的主要原因之一Frame——构建便于布局的小部件容器。

至于调整大小,问题可能是您没有为主窗口的行和列添加权重。尽管这也可能与您grid用于将框架放置在笔记本中的事实有关;你不能用来grid在笔记本中放置项目。

于 2012-06-27T18:04:36.553 回答