为什么我的对象向错误的方向移动

时间:2016-10-12 18:06:48

标签: python canvas tkinter coordinates

我制作了一个简单的程序,用于在画布内水平左右移动球。用户将使用左右键相应地将球移动5个像素。如果球的x坐标小于40或大于240,那么它将什么都不做。

try:    
    import tkinter as tk
except ImportError:
    import Tkinter as Tk

window = tk.Tk()
game_area = tk.Canvas(width=270, height=400, bd=0, highlightthickness=0,
                      bg="white")

ball = game_area.create_oval(10, 10, 24, 24, fill="red")
game_area.move(ball, 120, 4)
coords = 120

def move_left(event):
    global coords
    if coords < 40:
        pass
    else:
        coords = int(coords)- 5
        game_area.move(ball, coords, 4)
    game_area.update()

def move_right(event):
    global coords
    if coords > 240:
        pass
    else:
        coords = int(coords)+5
        game_area.move(ball, coords, 4)
    game_area.update()

window.bind("<Left>", move_left)
window.bind("<Right>", move_right)
game_area.pack()
window.mainloop()

然而,按任一键可将球向右移动(超过5个像素)并离开屏幕,尽管if功能可以防止这种情况发生。

1 个答案:

答案 0 :(得分:2)

根据Tkinter Canvas documentationmove方法dx的第二个参数是偏移量。尝试将其称为

game_area.move(ball, -5, 4)

然后你也不需要以下一行。

coords = int(coords)- 5