在Python中,当用户按Tab键时,如何获取结束的用户输入?

在Python中,当用户按Tab键时,如何获取结束的用户输入?,python,string,variables,user-input,Python,String,Variables,User Input,我一直在试图找到一种方法,以用户按下Tab键结束用户输入。我想让用户输入注释,直到他们按Tab键才完成输入 我试图使用这种方法,但不知道该怎么做 text = input() 我希望用户键入注释,并能够在不完成输入的情况下按Enter键转到新行。只有用户按Tab键,输入才会完成,文本才会存储到变量中。您所要求的听起来很简单,但不幸的是,这并不容易做到。问题是从命令行到程序的输入是行缓冲的。也就是说,一次只向程序发送一行。解决这个问题有一些困难的方法,但通常效果不太好 如果你用你试图达到的目标来

我一直在试图找到一种方法,以用户按下Tab键结束用户输入。我想让用户输入注释,直到他们按Tab键才完成输入

我试图使用这种方法,但不知道该怎么做

text = input()

我希望用户键入注释,并能够在不完成输入的情况下按Enter键转到新行。只有用户按Tab键,输入才会完成,文本才会存储到变量中。

您所要求的听起来很简单,但不幸的是,这并不容易做到。问题是从命令行到程序的输入是行缓冲的。也就是说,一次只向程序发送一行。解决这个问题有一些困难的方法,但通常效果不太好

如果你用你试图达到的目标来澄清你的问题,人们可能会提供更好的解决方案。同时,这里有一个简单的版本,如果用户按tab键,然后按enter键,则结束输入:

def get_input_ending_with_tab():
inp=input()+“\n”
虽然不是inp.endswith(“\t\n”):
inp+=input()+“\n”
返回inp
这里有一个更复杂的版本,它可以满足您的需要,但不能在Windows上运行。这也只能在程序的交互式执行中工作(当它连接到TTY时)

导入系统 进口tty 进口术语 def get_input_ending_与_tab_2() buf=“” stdin=sys.stdin.fileno() tattr=termios.tcgetattr(stdin) 尝试: tty.setcbreak(标准输入,终端输出) 尽管如此: buf+=sys.stdin.read(1) 打印(buf[-1],end=”“) sys.stdout.flush() 如果buf[-1]=“\t”: 打破 最后: termios.tcsetattr(stdin、termios.TCSANOW、tattr) 打印() 返回buf 使用此选项:并在读取字符选项卡时终止。