首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过在CodeSkulptor (Python)上按一个按钮来使文本连续移动?

如何通过在CodeSkulptor (Python)上按一个按钮来使文本连续移动?
EN

Stack Overflow用户
提问于 2019-02-11 02:41:32
回答 1查看 239关注 0票数 0

我试图通过按下一个按钮来使文本连续移动,但现在每次按下它时,它只移动一个间隔。

代码语言:javascript
复制
def move():
    global y
    global checkmove
    checkmove = True
    if y > 280:
        y = 0
    else:
        y += 2
EN

回答 1

Stack Overflow用户

发布于 2019-03-22 21:23:34

没有内置的方法来判断按钮是否被按下。但是,有一个button_up处理程序和一个button_down处理程序。如果你使用计时器,你可以知道按键的时间有多长。下面是一个代码示例,可以告诉你哪些键被按下了。可以一次按住多个键。如果要更改计时,可以在代码底部更改计时器的长度。更改定时器1的值将更改在模拟按键之前按键的时间长度,更改定时器2的长度将更改按下后按键的速度。您还可以在此处查看代码:https://py3.codeskulptor.org/#user303_gtJ15kIGNV_0.py

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54619740

复制
相关文章

相似问题

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