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

如何在Tkinter中嵌套Frame?嵌套失败问题求助

解决Tkinter Frame嵌套失败的问题

我来帮你排查下问题哈——你这段代码里的Frame嵌套失败,核心原因是把Frame的创建和pack()调用写在同一行了!

问题根源

Tkinter里的pack()(包括grid()、place())方法返回的是None,如果你像这样写:

lframe=Frame(r,width=1000,height=650,relief='raise',bd=8).pack(side=LEFT)

那lframe变量保存的不是创建出来的Frame对象,而是None!后续你想把lframe1嵌套到lframe里,其实是把父容器指定成了None,这些子Frame就会直接挂载到主窗口r上,自然就乱了。

修正后的代码

把Frame的创建和布局方法分开写,让变量保存真正的Frame对象:

from tkinter import Tk, Frame  # 记得导入需要的模块哦

r = Tk()
r.geometry("1350x650")  # 建议给主窗口设置合适的大小

# 创建左侧主Frame并布局
lframe = Frame(r, width=1000, height=650, relief='raise', bd=8)
lframe.pack(side="left")

# 创建右侧主Frame并布局
rframe = Frame(r, width=350, height=650, relief='raise', bd=8)
rframe.pack(side="right")

# 嵌套左侧子Frame
lframe1 = Frame(lframe, width=1000, height=100, bd=8, relief='raise')
lframe1.pack(side="top")

lframe2 = Frame(lframe, width=1000, height=55, bd=8, relief='raise')
lframe2.pack(side="top")

# 嵌套右侧子Frame
rframe1 = Frame(rframe, width=350, height=215, relief='raise', bd=8)
rframe1.pack(side="top")

rframe2 = Frame(rframe, width=350, height=415, relief='raise', bd=8)
rframe2.pack(side="top")

r.mainloop()

效果说明

这样修改后,子Frame就会正确嵌套到对应的父Frame里,布局就会和你预期的一样:左侧主Frame里上下排列两个子Frame,右侧主Frame里也是上下排列两个子Frame。

内容的提问来源于stack exchange,提问作者Vignesh A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:18:44