Tkinter添加图片Label代码后无输出、窗口突然关闭如何解决?
Tkinter添加图片Label后窗口自动关闭问题排查与修复
问题根因
- 核心错误为
place布局方法的参数使用错误:relwidth、relheight是相对尺寸参数,取值范围为0~1的浮点数,代表占父容器宽高的比例,传入400、500的绝对数值会触发参数类型不匹配异常,导致程序直接崩溃退出。 - 若参数修正后仍存在图片不显示的情况,属于Tkinter图片引用被Python垃圾回收机制销毁的常见问题,后续优化可以一并处理。
解决方法
- 修正布局参数:如果需要设置固定宽高,将
relwidth、relheight替换为对应绝对尺寸参数width、height。
原错误代码行:
修正后代码行:left = Label(self.root, image=self.left).place(x=80, y=100,relwidth=400,relheight=500)left = Label(self.root, image=self.left).place(x=80, y=100, width=400, height=500) - 可选优化:将Label实例绑定到类属性,避免局部变量销毁后图片引用丢失,彻底规避图片不显示问题:
# LEFT image self.left = ImageTk.PhotoImage(file="D:/tkinter_Navjot/side1.jpg") self.left_label = Label(self.root, image=self.left) self.left_label.place(x=80, y=100, width=400, height=500)
修复后完整代码
from tkinter import * from PIL import Image,ImageTk class Register: def __init__(self,root): self.root=root self.root.title("Material Calculator") self.root.geometry("1350x700+0+0") # BG image self.bg=ImageTk.PhotoImage(file="D:/tkinter_Navjot/back.jpg") self.bg_label=Label(self.root,image=self.bg) self.bg_label.place(x=250,y=0,relwidth=1,relheight=1) # LEFT image self.left = ImageTk.PhotoImage(file="D:/tkinter_Navjot/side1.jpg") self.left_label = Label(self.root, image=self.left) self.left_label.place(x=80, y=100, width=400, height=500) root=Tk() obj=Register(root) root.mainloop()
内容的提问来源于stack exchange,提问作者Naman Shrivastava
相关产品推荐
相关产品推荐

