You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 04:55:21