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

Tkinter中Frame位置仅显示单个像素且内部Button消失问题排查

问题根因
  • place布局的坐标是相对于父组件计算的:你将Button的父容器设置为自定义边框Frame,此时给Button设置的x=500、y=380是相对于Frame左上角的偏移量,而Frame默认尺寸极小,Button直接超出了Frame的可视范围,因此完全看不到。
  • Frame的padx/pady属性仅在使用pack/grid布局管理内部组件时生效,你对Frame和内部Button都用place布局,这两个属性不会自动撑开Frame尺寸,Frame会缩到默认最小尺寸,所以你只能看到对应边框颜色的单个像素点。
修复方案

推荐直接改用pack布局管理Frame内的Button,不需要手动计算坐标,还能自动适配尺寸:

b_sel_date_border=Frame(x)
b_sel_date_border["highlightthickness"]=5
b_sel_date_border["highlightbackground"]="#00f3b2"
b_sel_date_border["bd"]=0

b_sel_date=Button(b_sel_date_border)
b_sel_date["text"]="Select date"
b_sel_date["bg"]="#310054"
b_sel_date["fg"]="#00f3b2"
b_sel_date["bd"]=0
b_sel_date["font"]=("Arial",12,"bold")
b_sel_date["activebackground"]="#310054"
b_sel_date["activeforeground"]="#00f3b2"
# 内部按钮用pack,加padx/pady控制按钮和边框的间距
b_sel_date.pack(padx=50, pady=50)
# Frame设置到目标位置即可
b_sel_date_border.place(x=500,y=380)

如果你坚持要使用place布局管理内部按钮,需要把Button的相对坐标改为Frame内的偏移量,同时给Frame设置足够的宽高:

b_sel_date_border=Frame(x, width=200, height=80) # 显式设置Frame宽高
b_sel_date_border["highlightthickness"]=5
b_sel_date_border["highlightbackground"]="#00f3b2"
b_sel_date_border["bd"]=0

b_sel_date=Button(b_sel_date_border)
b_sel_date["text"]="Select date"
b_sel_date["bg"]="#310054"
b_sel_date["fg"]="#00f3b2"
b_sel_date["bd"]=0
b_sel_date["font"]=("Arial",12,"bold")
b_sel_date["activebackground"]="#310054"
b_sel_date["activeforeground"]="#00f3b2"
# 坐标改为相对于Frame的偏移,比如左上角5,5的位置
b_sel_date.place(x=5, y=5)
b_sel_date_border.place(x=500,y=380)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:48:03