Adding a background image in python

2019-02-25 06:45发布

I'm trying to add a background image to a canvas in Python. So far the code looks like this:

from Tkinter import *
from PIL import ImageTk,Image

... other stuffs

root=Tk()
canvasWidth=600
canvasHeight=400
self.canvas=Canvas(root,width=canvasWidth,height=canvasHeight)
backgroundImage=root.PhotoImage("D:\Documents\Background.png")
backgroundLabel=root.Label(parent,image=backgroundImage)
backgroundLabel.place(x=0,y=0,relWidth=1,relHeight=1)
self.canvas.pack()
root.mainloop()

It's returning an AttributeError: PhotoImage

2条回答
我命由我不由天
2楼-- · 2019-02-25 07:30

just change to :

    image = Image.open("D://Engagement2/backgrounds/500x400.png")
    backgroundImage=ImageTk.PhotoImage(image)

believe me this will 100% work

查看更多
够拽才男人
3楼-- · 2019-02-25 07:46

PhotoImage is not an attribute of the Tk() instances (root). It is a class from Tkinter.

So, you must use:

backgroundImage = PhotoImage("D:\Documents\Background.gif")

Beware also Label is a class from Tkinter...

Edit:

Unfortunately, Tkinter.PhotoImage only works with gif files (and PPM). If you need to read png files you can use the PhotoImage (yes, same name) class in the ImageTk module from PIL.

So that, this will put your png image in the canvas:

from Tkinter import *
from PIL import ImageTk

canvas = Canvas(width = 200, height = 200, bg = 'blue')
canvas.pack(expand = YES, fill = BOTH)

image = ImageTk.PhotoImage(file = "C:/Python27/programas/zimages/gato.png")
canvas.create_image(10, 10, image = image, anchor = NW)

mainloop()

enter image description here

查看更多
登录 后发表回答