Tkinter pyimage 不存在

Posted

技术标签:

【中文标题】Tkinter pyimage 不存在【英文标题】:Tkinter pyimage doesn't exist 【发布时间】:2014-08-08 01:42:55 【问题描述】:

我知道有很多类似的问题,但没有任何简单到我能够理解的问题。我有以下代码:

import Tkinter as tk
from PIL import Image, ImageTk

class MainWindow:
    def __init__(self, master):
        canvas = Canvas(master)
        canvas.pack()
        self.pimage = Image.open(filename)
        self.cimage = ImageTk.PhotoImage(self.pimage)
        self.image = canvas.create_image(0,0,image=self.cimage)


filename = full_filename
root = tk.Tk()
x = MainWindow(root)
mainloop()

我收到以下错误:

TclError: image "pyimage36" doesn't exist

我读过一些关于图像对象被垃圾清理的内容,但我不太明白。

【问题讨论】:

显示完整的错误信息 - 有更多信息。 “pyimage36”是文件名还是什么? 我也遇到过这个问题。我似乎只有在使用 Spyder 时才会遇到这个问题。在 Windows 和 Linux (Raspbian) 中使用 Spyder 时出现错误。当我在 Pi 上使用 Idle 或在 Windows 上使用 Pycharm 时,我没有得到这种行为。 【参考方案1】:
from tkinter import *
from PIL import Image, ImageTk

root = Tk()
root.title("Title")

img = Image.open('Paste the directory path')
bg = ImageTk.PhotoImage(img)

lbl = Label(root, image=bg)
lbl.place(x=0, y=0)

mainloop() 

我遇到了同样的错误。试试这个代码,这将对你有所帮助。 另外,如果您创建一个按钮并使用它打开其他窗口,则使用 window = Toplevel(),否则会再次显示相同的错误。

【讨论】:

【参考方案2】:

(Python 3.8) 如果您使用带有控制台的 IDE(例如 Spyder),只需在控制台中调用 root.mainloop()。 奇怪的是,您有一堆部分加载的 tkinter GUI,由于阻止 root.mainloop() 函数运行的错误而无法执行。 运行root.mainloop() 后,屏幕上可能会出现一堆GUI。关闭所有这些 GUI 后,再次尝试运行您的代码。Image of multiple Tkinter GUI's appearing on screen

在此处阅读有关mainloop() 的更多信息:https://pythonguides.com/python-tkinter-mainloop/

【讨论】:

【参考方案3】:

来自程序员

图像“pyimage1”不存在 因为一个程序中只能有一个根窗口,即只能存在一个Tk(),其他窗口只能以顶层窗口(Toplevel())的形式存在。

原始代码

import tkinter as tk
window = tk.TK()

修改后的代码

import tkinter as tk
window = tk.Toplevel()

保持其他代码不变

https://www.programmersought.com/article/87961175215/

【讨论】:

【参考方案4】:

我在使用 spyder 3.3.6 时遇到了同样的错误消息,在收到“Tinker pyimage 错误”后,我可以让 .png 文件加载和显示的唯一方法是转到控制台并重新启动内核。之后我工作得很好。

【讨论】:

【参考方案5】:

想通了。出于某种原因,在调试器中运行时,如果任何先前的执行抛出错误,我会得到“pyimage 不存在”错误。但是,如果我重新启动调试器(或者以前执行的脚本没有抛出错误),那么程序运行良好。

【讨论】:

有些人可能不同意。例如。在网络中,通常的做法是在一段时间后或遇到错误时重新启动服务器(而不是尝试修复错误)。这是因为从已知状态开始更容易预测。 谢谢!这就是使用 appJar 时的问题。

以上是关于Tkinter pyimage 不存在的主要内容,如果未能解决你的问题,请参考以下文章

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

如何查看 Tkinter 中是不是存在小部件?

Tkinter 和 USB 设备检测

tkinter - 加权画布不填充空白空间

Tkinter 从0到1——Variable类的使用方法详解

Tkinter 从0到1——Variable类的使用方法详解