如何才能在触发另一个按键事件后才触发另一个按键事件?

问题描述 投票:0回答:1

我是一名学习Python的学生,如果你们能帮助我解决这个问题,那就太好了。

这是一个临时的最小代码段,window1 是一个预制变量,它在函数外部创建一个矩形。

def key_pressed(event):
    if event.key == "a":
        add(window1)
    else:    
        if event.key == "n":
            name = str(input("Task Name: "))
            tname = Text(name)
            tname.set_position(get_width(), get_height())
            add(tname)              
        elif event.key == "t":
            time = int(input("Due Time: "))
            ttime = Text(str(time))
            add(tname)
    if event.key == "Escape":
        remove(window1)
        remove(tname)
        remove(ttime)

add_key_down_handler(key_pressed)

等等等等

我在 CodeHS 网站上使用 Python 3 Graphics (Brython),我希望我的程序仅在按下另一个按键事件后才允许某个按键事件。我尝试过嵌套 if 语句和其他东西,但我似乎无法让它工作。另外,event.key == "Escape" 不会删除 tname 和 ttime 图形。

如何才能做到在删除窗口时,只能在按“a”之后按“n”和“t”,而在“esc”之后不能按?

谢谢

python keyevent brython
1个回答
0
投票

我也是一名学生(目前也在做CodeHS),我试图找到一种方法来解决这个问题。这是代码的编辑版本(用您自己的代码替换“成功”消息,但由于我没有 window1,所以我决定使用简单的“打印”功能)。

has_a_yet = False

def callback(event):
    key = event.key
    print([key])
    
if key == 'a':
    print("A SUCCESSFUL")
    has_a_yet = True
    
if has_a_yet:
    if key == "n":
        name = str(input("Task Name: "))
        tname = Text(name)
        tname.set_position(get_width(), get_height())
        add(tname)              
    elif key == "t":
        time = int(input("Due Time: "))
        ttime = Text(str(time))
        add(tname)

if key == "Escape":
    print("remove all objects")

add_key_down_handler(callback)

我希望这对你有用! 哦,还有一件事......

供将来参考(我在寻找解决方案时发现了这个),Brython 中有一个函数称为:

add_key_down_handler(callback)

如果这对任何人都有用,或者如果有人知道如何将其与任何解决方案集成(因为我也在努力让它发挥作用),请回复!谢谢你;)

© www.soinside.com 2019 - 2024. All rights reserved.