如何用tkinter的pack()方法在窗口中布局四个Frame组件
使用Tkinter .pack()实现目标布局的方案
要实现你需要的左右分栏、每栏上下两个Frame的布局,最清晰可靠的方式是通过嵌套Frame容器:把左侧的两个Frame放到一个父容器里,右侧的两个Frame放到另一个父容器里,再将这两个父容器分别排列在窗口的左右两侧。
调整后的完整代码:
# 创建左侧父容器,占据窗口左侧全部空间 left_container = Frame(current_tab) left_container.pack(side=LEFT, fill=BOTH, expand=True) # 左侧上方的Frame frame_left = Frame(left_container, borderwidth=0, relief=GROOVE) frame_left.pack(side=TOP, fill=BOTH, expand=True) # 左侧新增的底部Frame(你要设置的frame_bottom_left) frame_bottom_left = Frame(left_container, borderwidth=2, relief=GROOVE) frame_bottom_left.pack(side=BOTTOM, fill=BOTH, expand=True) # 创建右侧父容器,占据窗口右侧全部空间 right_container = Frame(current_tab) right_container.pack(side=RIGHT, fill=BOTH, expand=True) # 右侧上方的Frame frame_right = LabelFrame(right_container, labelwidget=lbl_frm_wdgt_arb, borderwidth=2, relief=GROOVE) frame_right.pack(side=TOP, fill=BOTH, expand=True) # 右侧底部的f11(原底部Frame移至此处) f11 = LabelFrame(right_container, borderwidth=2, pady=5, relief=GROOVE, labelwidget=lbl_frm_wdgt_founder) f11.pack(side=BOTTOM, fill=BOTH, expand=True)
参数说明:
side=LEFT/RIGHT:让左右两个父容器分别靠窗口左右边缘排列fill=BOTH:使容器在水平和垂直方向都填充可用空间expand=True:允许容器随窗口大小变化自动扩展- 嵌套在父容器内的子Frame用
side=TOP/BOTTOM实现上下排列,同样搭配fill=BOTH和expand=True让它们填满父容器的对应区域
如果不使用嵌套容器,直接在current_tab中排列会因pack的水平/垂直布局冲突导致布局混乱,嵌套容器是最直观且易维护的方案。
内容的提问来源于stack exchange,提问作者dogernout
相关产品推荐
相关产品推荐

