我想制造一个射弹,每秒沿y轴移动10个像素 使用after()函数。 我做的第一次尝试是:
def muovi(self, root):
i = 0
while i < 10:
i += 1
self.parent.move(self.colpo, 0, 10)
root.after(1000)
问题在于它完全忽略 self.parent.move(self.colpo,0,10) ,仅适用于循环结束。 然后我尝试了这个:
def muovi(self, root):
self.parent.move(self.colpo, 0, 10)
root.after(1000, self.muovi(root))
这次代码运行就像是代替 root.after(1000,self.muovi(root))那里有 self.muovi(root)),所以我立刻得到递归错误。
如何让 root.after()正常工作?
答案 0 :(得分:1)
你的第一段代码不起作用,因为你没有指定在1000毫秒后调用的函数。
你的第二段代码不起作用,因为define
所期望的第二个参数是一个函数,就像按钮的undefined
选项一样。
以下是一个例子:
after
答案 1 :(得分:1)
此代码:
root.after(1000, self.muovi(root))
在功能上与此代码完全相同:
result = self.muovi(root)
root.after(1000, result)
你看到了问题吗?您致电 self.muovi
并将结果提供给after
。相反,您必须向self.muovi
提供引用。其他位置参数可用作参考后面的参数:
root.after(1000, self.muovi, root)