2017-01-22 8 views
1

背景(フロアマップ)画像でキャンバス上を動くボールを描く必要があります。 イメージを読み込んでボールを動かすようにしましたが、キャンバスボールはバックグラウンドの上に置かれません。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\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() 

答えて

3

あなたがボールを描く下のキャンバスを置くのラベルに画像をロードします。あなたは同じキャンバスに画像をロードする必要があります。

これでこの

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-発注権を取得するためにボールを作成する前にイメージを作成することを確認します。

関連する問題