Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用任意按键获取要触发的命令_Python - Fatal编程技术网

Python 如何使用任意按键获取要触发的命令

Python 如何使用任意按键获取要触发的命令,python,Python,我在这里回答了一个问题(这个人想知道如何制作一个“打字效果”,字母一个接一个地打印出来,让人感觉有人在打信息),我使用了一个功能来打印信息。无论如何,有一个“kill key”可以停止打印效果,直接打印消息(以防玩家想要跳过效果)。我想知道是否有必要让它以任何键作为输入来跳过对话。例如,如果按下任何键,我希望它将done设置为True 如果按下键,straigt up是否工作而不是如果按下键=='a':是的,它确实工作,但它的工作方式有点奇怪,例如,功能键不工作,箭头键导致一些小错误。我只是在寻

我在这里回答了一个问题(这个人想知道如何制作一个“打字效果”,字母一个接一个地打印出来,让人感觉有人在打信息),我使用了一个功能来打印信息。无论如何,有一个“kill key”可以停止打印效果,直接打印消息(以防玩家想要跳过效果)。我想知道是否有必要让它以任何键作为输入来跳过对话。例如,如果按下任何键,我希望它将done设置为True

如果按下键,straigt up
是否工作而不是
如果按下键=='a':
是的,它确实工作,但它的工作方式有点奇怪,例如,功能键不工作,箭头键导致一些小错误。我只是在寻找一种不需要识别要触发的键的解决方案。按下箭头按钮时,
getkey()
函数返回什么?它可能检测不到功能键,当单击功能键时它会返回任何内容吗?我找到了解决方案,我只做了一些更改,效果很好。谢谢你的帮助:)
import time, threading, os, sys, tty, termios
from colr import color

def slow_type_interrupt(phrase,speed,r_value,g_value,b_value):
    done = False # this acts as the kill switch, using if statements, you can make certain button presses stop the message printing and outright display it
    def type_out():
        for char in phrase:
            if done:
                break
            sys.stdout.write(color(char,fore=(r_value,g_value,b_value)))
            sys.stdout.flush()
            time.sleep(speed)
        os.system('clear')
        print(color(phrase,fore=(r_value,g_value,b_value)))

    t = threading.Thread(target=type_out)
    t.start()

    def getkey():
        ky = sys.stdin.fileno()
        Ab = termios.tcgetattr(ky)
        try:
            tty.setraw(sys.stdin.fileno())
            key = sys.stdin.read(1)

        finally:
            termios.tcsetattr(ky, termios.TCSADRAIN, Ab)
        return key

    while not done:
        key_press = getkey()
        if key_press == 'a': 
            done = True
            os.system('clear')
            print(color(phrase,fore=(r_value,g_value,b_value)))

slow_type_interrupt("Hello this is a test. Pressing 'a' will end this and immediatley display the message",.05,0,255,0)