2024-04-19 11:06:04 发布
网友
注意:我已经尝试从https://docs.python.org/3/和其他堆栈溢出问题中找到解决方案,但是我没有找到。在
我要找的很简单。在使用这样的代码时:
import turtle s = turtle.Screen() def u(): t.forward(50) s.onkey(u(), "Up") s.listen()
它只是运行代码u,所以首先:为什么它不等到我按下“Up”键?第二,我怎样才能做到呢?在
u
当你在函数后面加上括号时,你正在调用它。只需取出这些值来传递函数本身而不是它返回的值:
import turtle s = turtle.Screen() def u(): t.forward(50) s.onkey(u, "Up") s.listen()
在Python中,函数和其他东西一样都是对象。你不需要括号来使用它们。你可以做v = u,你将能够使用v()。如果你说u = 4,你就不能再使用u(),因为现在{}指的是其他东西。在
v = u
v()
u = 4
u()
您需要执行onkey和listen调用外部的u回调函数。在
onkey
listen
像这样:
import turtle def u(): t.forward(50) s = turtle.Screen() t = turtle.Turtle() s.onkey(u, "Up") s.listen() turtle.done()
注意,在s.onkey(u, "Up")中,我只有u不是u()。前者将函数本身传递给.onkey,这样它就知道当"Up"键事件发生时要调用什么函数。后者只是将调用u(这是None,因为u没有return语句)的结果传递给.onkey。在
s.onkey(u, "Up")
.onkey
"Up"
None
return
另外,您的代码省略了^{}调用。它告诉turtle进入事件循环,这样它将侦听事件并对其作出响应。没有它,脚本会打开一个海龟窗口,然后立即关闭它。在
顺便说一句,您发布的代码有一个IndentationError;在Python中,正确的缩进是vital。在
IndentationError
当你在函数后面加上括号时,你正在调用它。只需取出这些值来传递函数本身而不是它返回的值:
在Python中,函数和其他东西一样都是对象。你不需要括号来使用它们。你可以做}指的是其他东西。在
v = u
,你将能够使用v()
。如果你说u = 4
,你就不能再使用u()
,因为现在{您需要执行
onkey
和listen
调用外部的u
回调函数。在像这样:
注意,在
s.onkey(u, "Up")
中,我只有u
不是u()
。前者将函数本身传递给.onkey
,这样它就知道当"Up"
键事件发生时要调用什么函数。后者只是将调用u
(这是None
,因为u
没有return
语句)的结果传递给.onkey
。在另外,您的代码省略了^{} 调用。它告诉turtle进入事件循环,这样它将侦听事件并对其作出响应。没有它,脚本会打开一个海龟窗口,然后立即关闭它。在
顺便说一句,您发布的代码有一个
IndentationError
;在Python中,正确的缩进是vital。在相关问题 更多 >
编程相关推荐