簡體   English   中英

海龜圖形 onkeyrelease()

[英]Turtle graphics onkeyrelease()

無法從 Python 的 turtle 模塊實現onkeyrelease() 請指教。 錯誤消息: 'module' object has no attribute 'onkeyrelease' 嘗試用turtle.onkeyrelease(stay, 'd')替換wn.onkeyrelease(stay, 'd')無濟於事。

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)

根據錯誤消息,我的猜測是您正在運行 Python 2 並且onkeyrelease()是 Python 3 方法。 即使是這樣:

從 Python 2 到 Python 3 的過渡產物,onkey onkey()onkeyrelease()同義詞 您可能想要的是onkeypress()onkeyrelease() 即使是這樣:

也就是說,在按鍵按下和釋放時嘗試做不同的事情是否會起作用是不確定的。 在我的系統上,按下和釋放都是由按鍵觸發的。 由於操作系統的原因,您的結果可能會有所不同。

您最好使用兩個鍵,'d' 開始動作,'s' 停止它:

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()

此代碼應在 Python 2 和 Python 3 下工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM