Итак, я пытаюсь нарисовать изображение на холсте tkinter в Python и постоянно получаю ошибку в заголовке. У меня есть ссылка на tkinter.Tk(), я установил ее как мастер холста, упаковал холст и запустил основной цикл. Все это происходит при запуске программы. Затем я вызываю gui.drawentity() в main.py, который пытается создать изображение и отрисовать его на холсте. gui.py
File "S:\Users\Sean\Google Drive\cs\personal\BallAdventure\main.py", line 12, in
gui.drawentity(e)
File "S:\Users\Sean\Google Drive\cs\personal\BallAdventure\gui.py", line 22, in drawentity
img = tk.PhotoImage(imgPath)
File "C:\Users\Sean\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 4093, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "C:\Users\Sean\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 4026, in __init__
master = _get_default_root('create image')
File "C:\Users\Sean\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 297, in _get_default_root
raise RuntimeError(f"Too early to {what}: no default root window")
RuntimeError: Too early to create image: no default root window
У меня все нормально, может кто-нибудь понять, в чем проблема?
Итак, я пытаюсь нарисовать изображение на холсте tkinter в Python и постоянно получаю ошибку в заголовке. У меня есть ссылка на tkinter.Tk(), я установил ее как мастер холста, упаковал холст и запустил основной цикл. Все это происходит при запуске программы. Затем я вызываю gui.drawentity() в main.py, который пытается создать изображение и отрисовать его на холсте. [b]gui.py[/b] [code]root = tk.Tk() canvas = tk.Canvas(root, bg="green")
def drawentity(entity): imgPath = data.getimagepath(entity.img, entity.imgType) img = None try: img = tk.PhotoImage(imgPath) canvas.create_image(entity.x, entity.y, img) except IOError as e: print(e) finally: if not isinstance(img, type(None)): img.close() [/code] [b]main.py[/b] [code]e = player.Player(100, 200, "Ball_Grayed.png", 3) gui.drawentity(e) [/code] [b]data.py[/b] [code] cd = os.path.join(os.getcwd(), "resources") def getimagepath(imgName, imgType): return os.path.join(cd, imgType, imgName) [/code] При запуске py main.py я получаю следующий результат: [code]File "S:\Users\Sean\Google Drive\cs\personal\BallAdventure\main.py", line 12, in gui.drawentity(e) File "S:\Users\Sean\Google Drive\cs\personal\BallAdventure\gui.py", line 22, in drawentity img = tk.PhotoImage(imgPath) File "C:\Users\Sean\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 4093, in __init__ Image.__init__(self, 'photo', name, cnf, master, **kw) File "C:\Users\Sean\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 4026, in __init__ master = _get_default_root('create image') File "C:\Users\Sean\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 297, in _get_default_root raise RuntimeError(f"Too early to {what}: no default root window") RuntimeError: Too early to create image: no default root window [/code] У меня все нормально, может кто-нибудь понять, в чем проблема?