我需要在带有背景(楼层 map )图像的 Canvas 上绘制一个移动的球。 我成功加载图像并绘制移动的球,但 Canvas 球没有放置在背景之上。
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()
最佳答案
您将图像加载到位于绘制球的 Canvas 下方的标签中。您必须将图像加载到同一个 Canvas 中。
替换这个
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 顺序。
关于python - 如何创建 tkinter 背景图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41794551/