【问题标题】:pyimage# does not exist: only after an error occurs, I get this errorpyimage#不存在:只有在发生错误后,我才得到这个错误
【发布时间】:2022-11-03 23:50:10
【问题描述】:

如果我在新创建的控制台(使用 spyder)中运行我的代码,并且之前的任何运行都没有发生错误,那么代码可以正常工作。但是如果我运行它,并且发生任何错误,下次我运行它时,我会得到

“TclError:图像“pyimage5”不存在”

我可以关闭控制台,然后打开一个新的控制台,但这很快就变得非常烦人。我对 tkinter 还很陌生,这让我发疯了!请帮忙。

我的代码如下:
(要清楚,这只是一段代码)

import pandas as pd
import tkinter as tk
# import tkinter
import customtkinter
import tkinter.messagebox
from PIL import Image, ImageTk
import os

customtkinter.set_appearance_mode("Dark")  # Modes: "System" (standard), "Dark", "Light"
customtkinter.set_default_color_theme("green")  # Themes: "blue" (standard), "green", "dark-blue"

# PATH = os.path.dirname(os.path.realpath(__file__))
PATH = os.path.dirname(r'C:\Users\zwaldman\.spyder-py3\test_images\bg_gradient.jpg')

class App(customtkinter.CTk):

    APP_NAME = "VXL Labeling Wizard"
    WIDTH = 900
    HEIGHT = 600

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        
        self.title(App.APP_NAME)
        self.geometry(f"{App.WIDTH}x{App.HEIGHT}")
        self.minsize(App.WIDTH, App.HEIGHT)
        self.maxsize(App.WIDTH, App.HEIGHT)
        self.resizable(False, False)
        
        self.protocol("WM_DELETE_WINDOW", self.on_closing)
        
        # load image with PIL and convert to PhotoImage
        self.image1 = Image.open(PATH + "/bg_gradient.jpg").resize((self.WIDTH, self.HEIGHT))
        self.bg_image = ImageTk.PhotoImage(self.image1)

        self.image_label = tk.Label(master=self, image=self.bg_image)
        self.image_label.place(relx=0.5, rely=0.5, anchor=tkinter.CENTER)

        # self.image1= x
    
    def on_closing(self, event=0):
        self.destroy()

if __name__ == "__main__":
    app = App()
    app.mainloop()

编辑:更正:控制台,而不是终端。

【问题讨论】:

  • 是什么终端实际上? IPython 还是 IDLE?如果有错误,CTk() 的实例可能仍然存在,导致下次运行异常。
  • 所以我正在使用spyder。我想我的意思是控制台,而不是终端。会编辑。
  • Spyder 正在使用 IPython 控制台,所以我的上一条评论中可能会提到这个问题。
  • 如果有,我看不到它或不知道它叫什么。我将如何找到/修复它?
  • 例外是由于Tk() 的多个实例,这是CTk() 继承自的。您的代码在正常情况下基本上可以正常工作。

标签: python tkinter


【解决方案1】:

可能您会遇到错误,因为路径是“错误的”。

我使用/ 而不是 并删除了重复声明的g_gradient.jpg

当我们声明路径时,它需要以/ 结尾,因为如果不是,最后一个文件将不会被识别为路径的一部分。

#fixed:
PATH = os.path.dirname(r"C:/Users/zwaldman/.spyder-py3/test_images/")

【讨论】:

    猜你喜欢
    • 2011-11-11
    • 1970-01-01
    • 2013-11-15
    • 2018-05-06
    • 2017-09-18
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 2023-01-23
    相关资源
    最近更新 更多