首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在海龟身上系上扣子?

如何在海龟身上系上扣子?
EN

Stack Overflow用户
提问于 2016-03-14 01:31:32
回答 2查看 1.2K关注 0票数 1

注意:我已经尝试过从https://docs.python.org/3/和其他堆栈溢出问题中找到解决方案,但一直未能找到。

我要找的东西很简单。在使用这样的代码时:

代码语言:javascript
复制
import turtle
s = turtle.Screen()
def u():
t.forward(50)
s.onkey(u(), "Up")
s.listen()

它只是运行代码u,所以首先:为什么它不等待直到我按下“向上”?其次,我怎样才能做到这一点呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-14 01:48:25

您需要在onkey回调函数之外执行ulisten调用。

如下所示:

代码语言:javascript
复制
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

此外,您的代码省略了turtle.done()调用。这就告诉乌龟进入事件循环,这样它就会监听事件并对事件做出反应。没有它,脚本打开一个乌龟窗口,然后立即关闭它。

顺便说一句,您发布的代码有一个IndentationError;正确的缩进在Python中是至关重要的。

票数 0
EN

Stack Overflow用户

发布于 2016-03-14 01:50:08

在函数后面加上括号时,将调用该函数。只需取出这些以传递函数本身,而不是它返回的内容:

代码语言:javascript
复制
import turtle
s = turtle.Screen()

def u():
    t.forward(50)

s.onkey(u, "Up")
s.listen()

在Python中,函数和其他所有东西一样都是对象。您不需要使用括号来使用它们。您可以执行v = u,然后就可以使用v()了。如果您说的是u = 4,那么您就不能再使用u()了,因为现在u指的是其他东西。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35978153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档