I've been working on a small project, and have encountered an error. Being a somewhat novice in tkinter, I don't know what it means. The details of the error and code that caused it are below.
This is my full error:
Traceback (most recent call last): File "D:\red zone\main.py", line 5, in <module> b = updateError((500,500)) File "D:\red zone\scripts\windows.py", line 44, in __init__ self.widget["image"] = self.widget.errorImage File "C:\Users\maude_u0wvgig\AppData\Local\Programs\Python\Python312\Lib\tkinter\__init__.py", line 1727, in __setitem__ self.configure({key: value}) File "C:\Users\maude_u0wvgig\AppData\Local\Programs\Python\Python312\Lib\tkinter\__init__.py", line 1716, in configure return self._configure('configure', cnf, kw) File "C:\Users\maude_u0wvgig\AppData\Local\Programs\Python\Python312\Lib\tkinter\__init__.py", line 1706, in _configure self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))_tkinter.TclError: image "pyimage2" doesn't exist
This is my directory structure:
\folder1 err.png\folder2 windows.pymain.py
My python files' code:
windows.py
## importsimport base64import osimport tempfileimport timeimport tkinter as tkimport zlibfrom tkinter import *from tkinter import ttkclass updateError(): def __init__(self, isTk=False, pos=[500,500]): ## variables self.ICON = zlib.decompress(base64.b64decode('eJxjYGAEQgEBBiDJwZDBy''sAgxsDAoAHEQCEGBQaIOAg4sDIgACMUj4JRMApGwQgF/ykEAFXxQRc=')) ## main program # window setup self._, self.ICON_PATH = tempfile.mkstemp() with open(self.ICON_PATH, 'wb') as self.icon_file: self.icon_file.write(self.ICON) if isTk: self.root = Tk() elif not isTk: self.root = Toplevel() elif type(isTk) is not bool: raise TypeError(f"needs bool, not {type(isTk)}") if not 0 <= pos[0] <= 900: raise ValueError("x position must be between 0 and 900") elif not 0 <= pos[1] <= 750: raise ValueError("y position must be between 0 and 750") self.frm = ttk.Frame(self.root, padding=10) self.frm.grid() # window content ttk.Label(self.frm, text="Windows was not installed properly. Please reinstall Windows.\nError 4 (Windows error 096)").grid(column=1, row=0) ttk.Button(self.frm, text="Ok").grid(column=5, row=3) # window config self.root.geometry(f"+{pos[0]}+{pos[1]}") self.root.title("Microsoft Windows") self.root.resizable(width=False, height=False) self.root.iconbitmap(default=self.ICON_PATH) self.widget = ttk.Label(self.frm) self.widget.errorImage = tk.PhotoImage(file=r"assets\err.png") self.widget["image"] = self.widget.errorImage self.widget.grid(column=0, row=0) self.root.after(1, lambda: self.root.focus_force())
main.py
## importsfrom scripts.windows import updateErrora = updateError(True, (900,750))b = updateError((500,500))
This does work in that it creates both windows as intended, but one is missing its image and both do not have the custom icons set.
Intended OS is Windows, but I would prefer cross-platform solutions.