Почему мое изображение Tkinter не загружается/не сохраняется, если активный файл не __main__?Python

Программы на Python
Anonymous
Почему мое изображение Tkinter не загружается/не сохраняется, если активный файл не __main__?

Сообщение Anonymous »

Я разрабатываю приложение Python с использованием Tkinter. Я создал модуль, который по сути является модальным, который можно вызывать в другом месте приложения - в том же файле я проверяю, является ли name основным, и проверяю модальный класс, если это так. Все работает, однако при использовании модуля из другого файла возникает следующая ошибка:

Код: Выделить всё

  File "c:\Users\setas\Documents\KID\V2\TkForge\auth.py", line 57, in _setup_ui
self.canvas.create_image(170, 24, image=self.image_1)
File "C:\Users\setas\AppData\Local\Programs\Python\Python312\Lib\tkinter\__init__.py", line 2864, in create_image
return self._create('image', args, kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\setas\AppData\Local\Programs\Python\Python312\Lib\tkinter\__init__.py", line 2850, in _create
return self.tk.getint(self.tk.call(
^^^^^^^^^^^^^
_tkinter.TclError: image "pyimage2" doesn't exist
Эта ошибка не возникает при обычном использовании.
Как я загружаю изображения

Код: Выделить всё

        self.image_1 = tk.PhotoImage(file=load_asset("logo.png", assetArea="auth"))
self.canvas.create_image(170, 24, image=self.image_1)
load_asset просто предоставляет путь к файлу ресурса, что, как я понимаю, является чрезмерным усложнением.
Как связаны модули
В main.py

Код: Выделить всё

import tabs
import header
import auth

# . . .

# Tabs
header_obj = header.Header(canvas)
header_obj.draw(canvas)
В header.py

Код: Выделить всё

import tkinter as tk
import tabs
from utilities import load_asset
import auth

class Tab:
def __init__(self):
pass

def draw(self, canvas):
pass

class Header(Tab):
def __init__(self, canvas):
super().__init__()
self.canvas = canvas
self.CurrentTab = None
self.CurrentButton = None
self.load_images()

def load_images(self):
self.image_1 = tk.PhotoImage(file=load_asset("image_1.png"))

def show_tab(self, button):
tab = None
if button == self.ButtonDrawer:
tab = tabs.Drawer
elif button == self.ButtonAdmin:
if auth.AuthWindow().request_auth():
tab = tabs.Admin
elif button == self.ButtonLogs:
tab = tabs.Logs

if tab:
if self.CurrentTab:
self.CurrentTab.close()
self.CurrentTab = tab(self.canvas)
self.CurrentTab.draw(self.canvas)
Я пытался удалить ненужные части, однако прикрепил все файлы сюда:
https://github.com/SetAsync/KIDUIConcept
Пожалуйста, дайте мне знать, если мне нужно предоставить что-нибудь еще, чтобы помочь найти проблему.
Я ценю любую помощь, которую вы можете предложить, спасибо!
Я пытался показать изображения в своем проекте tkinter, но не смог при внешнем вызове.


Подробнее здесь: https://stackoverflow.com/questions/786 ... file-is-no

Вернуться в «Python»