Tkinter RuntimeError: Zu früh zum Erstellen eines Images: kein Standard-Root-FensterPython

Python-Programme
Anonymous
 Tkinter RuntimeError: Zu früh zum Erstellen eines Images: kein Standard-Root-Fenster

Post by Anonymous »

Ich versuche also, ein Bild auf eine Tkinter-Leinwand in Python zu zeichnen, und erhalte immer wieder die Fehlermeldung im Titel. Ich habe einen Verweis auf tkinter.Tk(), ich habe ihn als Master des Canvas festgelegt, ich habe den Canvas gepackt und die Hauptschleife ausgeführt. Dies geschieht alles beim Programmstart. Dann rufe ich gui.drawentity() in main.py auf, das versucht, ein Bild zu erstellen und es auf die Leinwand zu zeichnen.
gui.py

Code: Select all

root = tk.Tk()
canvas = tk.Canvas(root, bg="green")

canvas.pack(fill=tk.BOTH, expand=True)
root.mainloop()

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

Code: Select all

e = player.Player(100, 200, "Ball_Grayed.png", 3)
gui.drawentity(e)
data.py

Code: Select all

 cd = os.path.join(os.getcwd(), "resources")
def getimagepath(imgName, imgType):
return os.path.join(cd, imgType, imgName)
Beim Ausführen von py main.py erhalte ich die folgende Ausgabe:

Code: Select all

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
Für mich sieht alles gut aus. Kann jemand sehen, wo das Problem liegt?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post