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

Tkinter添加图片Label代码后无输出、窗口突然关闭如何解决?

Tkinter添加图片Label后窗口自动关闭问题排查与修复

问题根因

  • 核心错误为place布局方法的参数使用错误:relwidth、relheight是相对尺寸参数,取值范围为0~1的浮点数,代表占父容器宽高的比例,传入400、500的绝对数值会触发参数类型不匹配异常,导致程序直接崩溃退出。
  • 若参数修正后仍存在图片不显示的情况,属于Tkinter图片引用被Python垃圾回收机制销毁的常见问题,后续优化可以一并处理。

解决方法

  1. 修正布局参数:如果需要设置固定宽高,将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)
    
  2. 可选优化:将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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:39:02