首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Turtle图形onkeyrelease()

Turtle图形onkeyrelease()
EN

Stack Overflow用户
提问于 2020-05-18 23:48:08
回答 1查看 540关注 0票数 0

无法从Python的turtle模块实现onkeyrelease()。请给我建议。错误消息:'module' object has no attribute 'onkeyrelease'。已尝试用wn.onkeyrelease(stay, 'd')替换turtle.onkeyrelease(stay, 'd'),但无济于事。

代码语言:javascript
运行
复制
import turtle

speed = 0

wn = turtle.Screen()
wn.tracer(0)

box = turtle.Turtle()
box.shape('square')
box.penup()

def move_right():
    global speed
    speed = 2

def stay():
    global speed
    speed = 0

turtle.listen()
turtle.onkey(move_right, 'd')
turtle.onkey(stay, 's')
turtle.onkeyrelease(stay, 'd')

while True:
    wn.update()
    box.setx(box.xcor() + speed)
EN

回答 1

Stack Overflow用户

发布于 2020-05-19 01:34:29

根据错误消息,我猜测您正在运行Python2,而onkeyrelease()是一个Python3方法。即便如此:

作为从Python2到Python3转换的产物,onkey()onkeyrelease()是同义词。您可能需要的是onkeypress()onkeyrelease()。即便如此:

也就是说,尝试在按键和释放键上做不同的事情是否会奏效还是个未知数。在我的系统上,按键和释放都是由按键触发的。由于操作系统的原因,您的结果可能会有所不同。

你最好使用两个键,'d‘来启动运动,'s’来停止运动:

代码语言:javascript
运行
复制
from turtle import Screen, Turtle, mainloop

speed = 0

def move_faster():
    global speed
    speed = 2

def stay():
    global speed
    speed = 0

def move():
    box.forward(speed)
    screen.update()
    screen.ontimer(move)

screen = Screen()
screen.tracer(False)

box = Turtle()
box.shape('square')
box.penup()

screen.onkey(stay, 's')
screen.onkey(move_faster, 'd')
screen.listen()

move()

mainloop()

这段代码应该可以在Python2和Python3下运行。

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

https://stackoverflow.com/questions/61873584

复制
相关文章

相似问题

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