python一个按钮控制两个事件_Python Turtle按键事件不重复

是有办法让它在Windows上工作,让拿着钥匙 下创建重复的事件?

按键重复是操作系统功能,不同的系统处理它的方式不同。例如,默认情况下,我的Apple OS X系统上的按键会重复播放,但我可以进入系统偏好设置/键盘并更改速率,甚至关闭它(我试图测试以下代码。)

如果您不喜欢“T有键重复,想模拟它,下面是一个使用龟定时器事件一键启动的关键重复下来,把它关掉关键了一个简单的例子:

# import the turtle module so we can use all the neat code it contains

from turtle import Turtle, Screen

KEY_REPEAT_RATE = 20 # in milliseconds

# Create a variable `tina` that is a Turtle() object. Set shape to 'turtle'

tina = Turtle('turtle')

# Create a variable `screen`, a Screen() object, that will handle keys

screen = Screen()

# Define functions for each arrow key

def go_left():

tina.left(7)

if repeating:

screen.ontimer(go_left, KEY_REPEAT_RATE)

def go_right():

tina.right(7)

if repeating:

screen.ontimer(go_right, KEY_REPEAT_RATE)

def go_forward():

tina.forward(10)

if repeating:

screen.ontimer(go_forward, KEY_REPEAT_RATE)

def go_backward():

tina.backward(10)

if repeating:

screen.ontimer(go_backward, KEY_REPEAT_RATE)

def start_repeat(func):

global repeating

repeating = True

func()

def stop_repeat():

global repeating

repeating = False

repeating = False

# Tell the program which functions go with which keys

screen.onkeypress(lambda: start_repeat(go_left), 'Left')

screen.onkeyrelease(stop_repeat, 'Left')

screen.onkeypress(lambda: start_repeat(go_right), 'Right')

screen.onkeyrelease(stop_repeat, 'Right')

screen.onkeypress(lambda: start_repeat(go_forward), 'Up')

screen.onkeyrelease(stop_repeat, 'Up')

screen.onkeypress(lambda: start_repeat(go_backward), 'Down')

screen.onkeyrelease(stop_repeat, 'Down')

# Tell the screen to listen for key presses

screen.listen()

screen.mainloop()

然而,你的挑战是当你需要这个模拟重复时,以及当系统已经具有重复能力时 - 弄清楚这两种情况都会变得混乱。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值