你用root
to AttributePhotoImage
这是不可能的!
root
是您的窗口Tk()
类,因此您不能为其归因,PhotoImage
因为它没有它,因此您可以看到AttributeError
tkinter.Tk()
并且tkinter.PhotoImage
是不同的类。和一样tkinter.Label
。
您的代码将无法使用root.PhotoImage
and root.Label
。尝试PhotoImage
并Label
直接。
创建一个Label
:
backgroundlabel = Label(parent, image=img)
如果使用任何类型的png
orjpg
并且jpeg
你不能用它来绘制它,PhotoImage
你将需要PIL库
pip3 install PIL
当你拥有它时,像这样使用它:
from PIL import Image, ImageTk # import image so you can append the path and imagetk so you can convert it as PhotoImage
现在获取您的完整路径图像,例如:
C:/.../img.png
现在使用它:
path = "C:/.../img.png" # Get the image full path
load = Image.open(path) # load that path
img = ImageTk.PhotoImage(load) # convert the load to PhotoImage
现在你的代码工作了。
完整代码:
from Tkinter import *
from PIL import ImageTk,Image
... other stuffs
root = Tk()
canvasWidth = 600
canvasHeight = 400
self.canvas = Canvas(root,width=canvasWidth,height=canvasHeight)
path = "D:\Documents\Background.png" # Get the image full path
load = Image.open(path) # load that path
img = ImageTk.PhotoImage(load)
backgroundLabel = Label(parent,image=img)
backgroundLabel .place(x=0,y=0,relWidth=1,relHeight=1)
self.canvas .pack()
root .mainloop()
希望这会有所帮助。