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

Tkinter问题:子框架在某一父框架中不显示但在其他框架中正常?

问题原因
  • 二级框架Transformations_left未调用布局方法:Tkinter中所有组件创建完成后,必须调用grid()/pack()/place()三种布局方法中的一种,才会被渲染到父容器中,你只创建了该框架但没有执行布局操作,因此它不会显示。
  • 标签重复布局导致位置冲突:你创建完Transformations_left后,错误地再次调用了Label_Header.grid()。此时Label_Header变量已经指向Header容器中第二个标签(文本为"PLACEHOLDER FOR LINKS"的标签),重复调用grid会将该标签从原位置(0,1)移动到(0,0),直接覆盖了同位置的第一个Header标签,因此出现原有标签消失的问题。
修复代码
import tkinter as tk
# create root
root = tk.Tk()
appTitle = "Fotoshoop"
root.title(appTitle)

factor = 1.618
rootWidth = 800
rootHeight = int(rootWidth / factor)
geo = "{}x{}".format(str(rootWidth), str(rootHeight))
root.geometry(geo)

# LAYER 1
l1padx = 10
l1pady = l1padx
l1w = 200
l1h = int(l1w / factor)
l1color = "gray"

Header = tk.Frame(root, bg=l1color, width=l1w, height=l1h)
Header.grid(row=0, column=0,
            ipadx=l1padx, ipady=l1pady, padx=l1padx, pady=l1pady)

Transformations = tk.Frame(root, bg=l1color, width=l1w, height=l1h)
Transformations.grid(row=1, column=0,
                     ipadx=l1padx, ipady=l1pady, padx=l1padx, pady=l1pady)

Content = tk.Frame(root, bg=l1color, width=l1w, height=l1h)
Content.grid(row=2, column=0,
             ipadx=l1padx, ipady=l1pady, padx=l1padx, pady=l1pady)


# LAYER 2
l2padx = 5
l2pady = l2padx
l2color = "blue"

msg_header = "Welcome!"
# 不同组件使用不同变量名,避免覆盖误操作
Label_Header1 = tk.Label(Header, bg=l2color, text=msg_header)
Label_Header1.grid(row=0, column=0, ipadx=l2padx,
                  ipady=l2pady, padx=l2padx, pady=l2pady)

Label_Header2 = tk.Label(Header, bg=l2color, text="PLACEHOLDER FOR LINKS")
Label_Header2.grid(row=0, column=1, ipadx=l2padx,
                  ipady=l2pady, padx=l2padx, pady=l2pady)

# 给二级框架调用grid方法完成布局
Transformations_left = tk.Frame(Transformations, bg=l2color, width=100, height=50)
Transformations_left.grid(row=0, column=0, ipadx=l2padx,
                  ipady=l2pady, padx=l2padx, pady=l2pady
                  )

root.mainloop()
补充建议
  • 不同组件尽量使用不同的变量名,避免变量被覆盖后误操作原有组件
  • 如果需要固定框架大小不受子组件影响,可以给框架调用grid_propagate(False)(使用grid布局的场景)或者pack_propagate(False)(使用pack布局的场景)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:06:04