Wie fügt man Images bei GUIs in Python ein? Ich habe das in einem Tutorial gesehen das war aber 2016! Das klappt 2021 nicht mehr! Kann mir jemand zeigen, wie?
Ich würde gerne ein Bild in einem Python GUI einfügen, ich weiß aber leider nicht wie das geht. Kann mir bitte jemand zeigen wie?
1 Antwort
Hier ein Beispielcode:
from tkinter import*
tk = Tk()
canvas = Canvas(tk, width=1000, height=600)
canvas.pack()
mein_Bild = PhotoImage(file='c:\\test.gif')
canvas.create_image(0, 0, anchor=NW, image=mein_Bild)
Ich würde aber bei der Bilddatei keinen absoluten Pfad nehmen, sondern einen relativen Pfad. Die Bilddatei muss sich im gleichen Ordner befinden wie die .py Datei.
Probiere mal diesen Code:
from tkinter import *
from PIL import Image, ImageTk
from random import *
class App(object):
def __init__(self):
self.root = Tk()
self.canvas = Canvas(self.root, height=222, width=227)
self.canvas.grid()
# small nature landscape
self.backgnd = PhotoImage(file = "images/nature.png")
# small white circle
self.mycloud = PhotoImage(file = "images/white.png")
backgnd_width = (self.backgnd.width()/2)
backgnd_height = (self.backgnd.height()/2)
self.canvas.create_image(backgnd_width,backgnd_height,image=self.backgnd)
def cloud(self):
pos_x = randint(1,220)
pos_y = randint(1,220)
self.canvas.create_image(pos_x,pos_y, image=self.mycloud)
app = App()
app.cloud()
app.cloud()
app.cloud()
app.cloud()
app.cloud()
app.root.mainloop()
Bei mir kommt die Felehrmeldung
Traceback (most recent call last):
File "C:/Users/Neil/PycharmProjects/Password cracker/)=.py", line 25, in <module>
app = App()
File "C:/Users/Neil/PycharmProjects/Password cracker/)=.py", line 12, in __init__
self.backgnd = PhotoImage(file = "images/nature.png")
File "C:\Users\Neil\anaconda\lib\tkinter\__init__.py", line 4061, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "C:\Users\Neil\anaconda\lib\tkinter\__init__.py", line 4006, in __init__
self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "images/nature.png": no such file or directory
Man muss bei "images/nature.png" und "images/white.png" den relativen Pfad zu deinen Bilddateien mit dem Namen der Bilddateien angeben.
Neue Felehrmeldung:
Traceback (most recent call last):
File "C:/Users/Neil/PycharmProjects/Password cracker/)=.py", line 25, in <module>
app = App()
File "C:/Users/Neil/PycharmProjects/Password cracker/)=.py", line 12, in __init__
self.backgnd = PhotoImage(file = "images/Illusion.png")
File "C:\Users\Neil\anaconda\lib\tkinter\__init__.py", line 4061, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "C:\Users\Neil\anaconda\lib\tkinter\__init__.py", line 4006, in __init__
self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "images/Illusion.png": no such file or directory
Eine weitere Möglichkeit wäre noch indem man PAGE verwendet. Das ist ein Tkinter GUI Designer. Er ist vergleichbar wie der Formdesigner bei Visual Studio. Damit geht das ganze einfacher. Auch die Funktion Bilder einzufügen geht damit einfacher. https://sourceforge.net/projects/page/files/page/6.0.1/
Die EXE ist für Windows und die tgz ist für Mac und Linux.
was ist der unterschied zwischen absolut und relativ? ich bin 11
Bei mir steht immer:
line 2, in <module>
tk = Tk()
NameError: name 'Tk' is not defined