2017-04-03 1 views
0

Ich habe einen Kreis, den ich um eine Karte bewegen möchte, ich bin in den frühen Stadien, aber ich habe an vielen Stellen gesucht und kann nicht herausfinden, warum der Kreis nicht ist ziehen um. mein Codecanvas.move bewegt sich nicht in Python

import Tkinter as Tkinter 

class gameScreen: 
    def moveup(self, event): 
     self.canvas.move(self.char, -100, 0) 
     self.canvas.focus(self.char) 
     self.canvas.update() 

    def __init__(self, master): 

     self.master = master 
     master.title("Game") 

     master.resizable(width=False, height=False) 
     self.img = tkinter.PhotoImage(file = "platformer.gif") 
     self.canvas = tkinter.Canvas(master, width=self.img.width(), 
              height=self.img.height()) 

     self.canvas.pack(expand="YES",fill="both") 

     self.canvas.create_image(0, 0,anchor="nw", image = self.img) 
     self.char = tkinter.PhotoImage(file = "hero.gif") 
     self.canvas.create_oval(0, 0, 50, 50, fill="red") 
     self.x = 0 
     self.y = 0 
     master.bind("<Up>", self.moveup)   

root = tkinter.Tk() 
my_gui = gameScreen(root) 
root.mainloop()` 

Antwort

1

Sie haben die move Methode eine ID oder ein Tag für ein Objekt auf der Leinwand zu geben. Die ID wird zurückgegeben, wenn Sie das Arbeitsflächenelement erstellen.

class gameScreen: 
    def moveup(self, event): 
     ... 
     self.canvas.move(self.canvas_item, -100, 0) 
     ... 

    def __init__(self, master): 
     ... 
     self.canvas_item = self.canvas.create_oval(...) 
     ...