2015-02-06 121 views
3

我目前正在从我的笔记本电脑ssh到一个覆盆子pi项目来控制一些电机。我已经在Python中编写了一些代码,允许您输入一个字母,并根据字母向前或向后移动。但是,您必须在代码执行后的每个字母后按Enter键。 有没有一种方式,界面检测字母,而不需要按下输入。 我知道你可以在tkinter中绑定按键,但是我不能通过ssh来完成。 在此先感谢绑定键按

+1

可能重复http://stackoverflow.com/questions/510357/python-read-a-single-character-from用户) – 2015-02-06 22:56:36

+0

@AnttiHaapala我找不到,因为我不完全知道我在找什么 – george 2015-02-06 22:59:03

+0

基本上,您可以将sys.stdin /终端放入“原始模式”并一次读取1个字符,如那里的一些答案。诅咒在这里回答也是一个选项,但是随后整个终端将被设置为curses模式。 – 2015-02-06 23:27:43

回答

2

您可以使用curses库。

您可以抓取使用screen.getch()函数按下的键。它将返回密钥的十进制代码(请参阅ASCII Table)。

一个例子:

import curses 


screen = curses.initscr() 
curses.cbreak() 
screen.keypad(1) 

key = '' 

while key != ord('q'): # press <Q> to exit the program 
    key = screen.getch() # get the key 
    screen.addch(0, 0, key) # display it on the screen 
    screen.refresh() 

    # the same, but for <Up> and <Down> keys: 
    if key == curses.KEY_UP: 
     screen.addstr(0, 0, "Up") 
    elif key == curses.KEY_DOWN: 
     screen.addstr(0, 0, "Down") 

curses.endwin() 
的[读的Python来自用户的单个字符(
+0

好的,这是我需要的有点东西,谢谢。如果我想打印输入的内容,您只需打印(键)。我不确定实际输入是什么 – george 2015-02-06 22:45:53

+0

@JoranBeasley虽然我从一个覆盆子pi运行它,我不使用Linux编码。我只是运行一些Python脚本。 – george 2015-02-06 22:47:16

+0

这是蟒蛇...但该代码只适用于Linux(即raspberrry pi) – 2015-02-06 22:48:21