【发布时间】: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()继承自的。您的代码在正常情况下基本上可以正常工作。