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

Python中Tkinter组件无法显示图片的问题求助

Tkinter图片不显示的解决方法

你的代码里图片不显示主要有两个核心问题,还有一个容易遗漏的细节:

1. 图片对象被垃圾回收

bank_img是__init__方法里的局部变量,当这个方法执行结束后,Python的垃圾回收机制会自动回收这个变量,导致Label失去对应的图片资源,自然无法显示。解决办法是把图片对象绑定为类的实例属性,让它和窗口实例的生命周期保持一致。

2. Windows路径转义问题

你写的路径里用了反斜杠\,在Python字符串中这是转义字符,比如\U会被解析成Unicode转义序列,直接导致路径识别错误。可以用三种方式修正:

  • 把反斜杠改成正斜杠/
  • 在路径字符串前加r,变成原始字符串(不解析转义字符)
  • 把反斜杠写成双反斜杠\\

3. 遗漏主事件循环

你的代码里没加root.mainloop(),这是启动Tkinter窗口主事件循环的关键,没有它窗口会直接关闭,根本看不到内容。

另外建议不要把Label(...)和.pack()写在同一行,因为.pack()返回的是None,后续如果要操作这个Label对象会找不到。

修改后的完整代码

from tkinter import *
class window1:
    def __init__(self, parent, word, geometry):
        # 修正路径并将图片绑定为实例属性
        self.bank_img = PhotoImage(file=r'C:\Users\user\PycharmProjects\pythonProject3\bank-988164_640.png')

        self.parent = parent
        self.word = word
        self.geometry = geometry
        parent.geometry(geometry)
        parent.title(self.word)

        # Label创建和布局分开写,避免变量指向None
        label = Label(parent, text="Welcome to the bank", height=3)
        label.pack()
        
        bank_logo = Label(parent, image=self.bank_img)
        bank_logo.pack()

root = Tk()
app = window1(root, 'beginner bank system', '300x300')
root.mainloop()  # 启动主事件循环

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:45:44