使用 Tkinter 时,错误:TclError: image "pyimage8" doesn't exist

Posted

技术标签:

【中文标题】使用 Tkinter 时,错误:TclError: image "pyimage8" doesn\'t exist【英文标题】:When using Tkinter, error: TclError: image "pyimage8" doesn't exist使用 Tkinter 时,错误:TclError: image "pyimage8" doesn't exist 【发布时间】:2018-10-05 07:52:04 【问题描述】:

我不断收到错误消息,TclError: image "pyimage8" doesn't exist。 很奇怪,每次运行的时候数字都会增加?

我正在使用 spyder 运行 python,不知道这是否会影响任何东西。

这是我的代码:

#import tkinter
import Tkinter as tk
  
homescreenImage = PhotoImage(file="Homescreen.gif") 

#create a GUI window.
root = Tk()
#set the title.
root.title("Welcome to the Pit!")
#set the size.
root.geometry("1100x700")

homescreenFrame = tk.Frame(root, width=1100, height = 700)
homescreenFrame.pack()

homescreenLabel = tk.Label(homescreenFrame, image=homescreenImage)
homescreenLabel.pack()


#start the GUI
root.mainloop()

【问题讨论】:

图片是否在运行此脚本的同一文件夹中? 这段代码抛出各种错误。请发帖minimal reproducible example。 【参考方案1】:

如果你import Tkinter as tk 你应该在调用 tk 时使用别名 tk,例如。 root = tk.Tk()。否则 Python 将找不到 Tk。

您不需要为此导入PIL

您不能在创建 Tk 之前创建 Photoimage。

试试这个:

import Tkinter as tk

root = tk.Tk()
root.title("Welcome to the Pit!")
root.geometry("1100x700")

homescreenImage = tk.PhotoImage(file="Homescreen.gif") 
homescreenFrame = tk.Frame(root, width=1100, height = 700,)
homescreenFrame.pack()
homescreenLabel = tk.Label(homescreenFrame, image=homescreenImage)
homescreenLabel.pack()

root.mainloop()

请善待并在您的问题中粘贴整个错误消息。

【讨论】:

【参考方案2】:

以下可能是错误:

1) 给出文件名的完整路径 例如:“/home/user/Homescreen.gif”

2) 如果您使用的是 windows 并且上述方法不起作用: 使用“\\C:\\home\\Homescreen.gif”(这是因为 windows 会混淆)

3) 如果这也不起作用,请确保您的 python 目录 程序与图片相同。

4) 此外,仅在创建根目录后创建照片图像 窗口。

5) 出于某种原因,在调试器中运行时,如果之前有 执行引发了错误我得到“pyimage 不存在”错误。 但是,如果我重新启动调试器(或没有以前执行的脚本 抛出错误),然后程序运行正常。

6) 另外,不要导入 PIL,它不是必需的。

尝试以上所有方法,如果不起作用,请告诉我。 希望这会有所帮助。

【讨论】:

【参考方案3】:

我发现我的脚本会运行一次,然后在后续运行时给我一个错误。如果我重新启动控制台,它将再次运行。我通过在脚本开头使用以下代码解决了这个问题:

import sys
if "Tkinter" not in sys.modules:
    from Tkinter import *

现在每次都有效。

【讨论】:

【参考方案4】:

就我而言,这是因为我忘记保留对图像的引用。创建标签后尝试添加此行:

homescreenLabel.image=homescreenImage.

【讨论】:

【参考方案5】:

我认为这可能是由于:

tkinter 只支持.png 格式的图片 但是,还有其他方法可以添加.gif`` instead of PhotoImage```

【讨论】:

以上是关于使用 Tkinter 时,错误:TclError: image "pyimage8" doesn't exist的主要内容,如果未能解决你的问题,请参考以下文章

为啥我会收到 tkinter.TclError: bitmap not defined 错误?

tkinter TclError:找不到包 treectrl

python3 tkinter报错:_tkinter.TclError: cannot use geometry manager pack inside . which already has sla

Python系列_tkinter.TclError: no display name and no $DISPLAY environment variable

tkinter ttk 主题:_tkinter.TclError:不支持图像文件格式“svg”

_tkinter.TclError: 预期的浮点数却得到了""