Python 如何创建tkinter背景图像?

Python 如何创建tkinter背景图像?,python,canvas,tkinter,Python,Canvas,Tkinter,我需要画一个在画布上移动的球和背景(地板地图)图像。 我成功地加载了图像,并绘制了移动的球,但画布球没有放置在背景的顶部 import Tkinter as tk import random import time from PIL import ImageTk, Image root = tk.Tk() root.resizable(width=False, height=False) root.wm_attributes("-topmost", 1) path = 'C:\xx\Pictu

我需要画一个在画布上移动的球和背景(地板地图)图像。 我成功地加载了图像,并绘制了移动的球,但画布球没有放置在背景的顶部

import Tkinter as tk
import random
import time
from PIL import ImageTk, Image

root = tk.Tk()
root.resizable(width=False, height=False)
root.wm_attributes("-topmost", 1)
path = 'C:\xx\Pictures\xxx.jpg'
img = Image.open(path)
photo = ImageTk.PhotoImage(img)

class Ball:
    def __init__(self, canvas, color):
        self.canvas = canvas
        self.id = canvas.create_oval(10, 10, 25, 25, fill=color)
        self.canvas.move(self.id, 245, 100)

    def draw(self):
        self.canvas.move(self.id, 1, 1)
        self.canvas.after(50, self.draw)


canvas = tk.Canvas(root,  bd=0, highlightthickness=0)
canvas.pack()
background_label = tk.Label(root, image = photo)
background_label.place(x=0, y=0, relwidth=1.0, relheight=1.0, anchor="center")
background_label.pack( )

ball = Ball(canvas, "red")
ball.draw()  #Changed per Bryan Oakley's comment.
root.mainloop()

将图像加载到放置在绘制球的画布下方的标签中。您必须在同一画布中加载图像

替换这个

background_label = tk.Label(root, image = photo)
background_label.place(x=0, y=0, relwidth=1.0, relheight=1.0, anchor="center")
background_label.pack( )
为此:

canvas.create_image(0, 0, image=photo)
确保在创建球之前创建图像,以获得正确的z顺序