Uncategorized

Python Tkinter error “pyimage2 deos not exist”


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.py
main.py

My python files’ code:

windows.py

## imports
import base64
import os
import tempfile
import time
import tkinter as tk
import zlib
from tkinter import *
from tkinter import ttk

class 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

## imports
from scripts.windows import updateError
 
a = 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.



Source link

Leave a Reply

Your email address will not be published. Required fields are marked *