【发布时间】:2019-02-19 11:49:43
【问题描述】:
在我的简单代码中,一个红球直线下落(这是有效的)。当我按下右箭头键时,我希望球也向正确的方向移动。但是,这不起作用。我做错了什么?
from tkinter import *
root = Tk()
canvas = Canvas(root, height=400, width=500, background='black')
canvas.pack()
class Bird:
def __init__(self, canvas, coords):
self.canvas = canvas
self.coords = coords
self.bird = canvas.create_rectangle(coords, fill='red')
def gravity(self):
self.canvas.move(self.bird, 0, 10)
self.canvas.after(200, self.gravity)
def moveRight(self, event):
self.canvas.move(self.bird, 10, 0)
self.canvas.after(200, self.moveRight)
bird = Bird(canvas, (100, 100, 110, 110))
bird.gravity()
canvas.bind('<Right>', bird.moveRight)
root.mainloop()
我还有一个问题:
是否可以为整个画布调用此“after”函数或类似函数,而不是分别调用这两种方法?
如果您发现我的代码有任何其他缺陷,请告诉我!
谢谢!
【问题讨论】:
-
“不工作”是什么意思?球会朝错误的方向飞去吗?你有错误吗?
-
小鸟按右箭头键没有反应,它只是摔倒了。但是,我没有收到错误消息
-
好的,所以问题不在于绑定本身。这只是焦点之一。仅当具有绑定的小部件具有键盘焦点时,与键的绑定才有效。
标签: python tkinter canvas move tkinter-canvas