我试图通过按下一个按钮来使文本连续移动,但现在每次按下它时,它只移动一个间隔。
def move():
global y
global checkmove
checkmove = True
if y > 280:
y = 0
else:
y += 2发布于 2019-03-22 21:23:34
没有内置的方法来判断按钮是否被按下。但是,有一个button_up处理程序和一个button_down处理程序。如果你使用计时器,你可以知道按键的时间有多长。下面是一个代码示例,可以告诉你哪些键被按下了。可以一次按住多个键。如果要更改计时,可以在代码底部更改计时器的长度。更改定时器1的值将更改在模拟按键之前按键的时间长度,更改定时器2的长度将更改按下后按键的速度。您还可以在此处查看代码:https://py3.codeskulptor.org/#user303_gtJ15kIGNV_0.py
def timer_handler():
#start timer 2 if it is off
if not timer_on:
timer2.start()
#stop timer 1
timer.stop()
def timer2_handler():
#simulates repeated keypresses if the key is held down
global timer_on
timer_on=True
if len(held_keys)==0:
timer2.stop()
timer_on=False
else:
for item in held_keys:
action(item)
def action(key):
#this is where all the code to make something happen goes
if key==upkey:
#do something
print('up key pressed')
elif key==downkey:
#do something else
print('down key pressed')
def key_handler(key):
#handles user keypresses
#add key to held keys
global held_keys
held_keys.append(key)
#do something with key
action(key)
#start timer 1 if timer 2 is off
if not timer_on:
timer.start()
def release_handler(key):
#handles key releases
#remove the key from the list
global held_keys
if key in held_keys:
held_keys.remove(key)
#if no keys are held, stop both timers
global timer_on
if len(held_keys)==0:
timer.stop()
timer2.stop()
timer_on=False
import simplegui
timer_on=False
held_keys=[]
#starts timer 2
timer = simplegui.create_timer(300, timer_handler)
#automatic keypress
timer2 = simplegui.create_timer(100, timer2_handler)
#map whatever keys you need
spacekey=simplegui.KEY_MAP['space']
leftkey=simplegui.KEY_MAP['left']
rightkey=simplegui.KEY_MAP['right']
upkey=simplegui.KEY_MAP['up']
downkey=simplegui.KEY_MAP['down']
#create a frame and set key down/up handlers
frame=simplegui.create_frame('Click the box, then use arrow keys to move', 100, 100)
frame.set_keydown_handler(key_handler)
frame.set_keyup_handler(release_handler)
frame.start()https://stackoverflow.com/questions/54619740
复制相似问题