在我写的一个程序中,turtle的onkey()方法并不能完全满足我的需要。我知道还有onkeypress和onkeyrelease,但我也不需要。是否有一种方法可以在按住键的同时连续运行功能?如
import turtle
num = 0
def add():
global num
num += 1
print(num)
turtle.onkey(add, "Up")
turtle.listen()
turtle.mainloop()
如果你做了这样的事情,为了获取键盘输入,onkey只响应一次,它只响应键的释放。是否有一种方法可以在按下时连续运行该功能?
答案 0 :(得分:0)
下面是一个粗略的示例,它使用onkeypress(
)和onkeyrelease()
组合进行描述。按“向上”后,它将开始计数整秒,直到您释放该键。然后它会在屏幕上写入密钥持有的整秒数:
from turtle import Turtle, Screen
FONT = ('Arial', 36, 'normal')
def add_start():
global seconds
print('pressed')
if seconds < 0:
turtle.undo() # remove previous time
seconds = 0
screen.ontimer(add, 1000)
def add():
global seconds
if seconds >= 0:
seconds += 1
screen.ontimer(add, 1000)
def add_stop():
global seconds
print('released')
turtle.write(seconds, align='center', font=FONT)
seconds = -1
screen = Screen()
turtle = Turtle(visible=False)
turtle.write(0, align='center', font=FONT)
seconds = -1
screen.onkeypress(add_start, 'Up')
screen.onkeyrelease(add_stop, 'Up')
screen.listen()
screen.mainloop()
以下是捕获:您需要在系统的操作系统级别关闭密钥重复。例如,在我的Mac上,在系统偏好设置/键盘中,我会这样做:
否则系统将生成按下和释放事件作为标准键重复的一部分。