如何将左箭头键作为输入?

5

我想将左右箭头键作为输入之一获取。有什么方法可以实现吗?


请定义“输入”,输入在控制台上?在窗口上?如果是在窗口上,使用了哪个GUI框架来创建窗口? - Ivo Wetzel
我想在窗口中获取输入。它由一些文本字段条目组成,如果我按左箭头键,则光标必须向后移动一个字段。这就是我需要的东西。好吧,我已经使用GLADE(gtk-builder)和Python创建了窗口。 - gnubala
终端脚本--我之前没有澄清,对此我深表歉意。我的工作从来不涉及GUI,所以这并不在我的考虑范围内。 - daniel
3个回答

6

使用Tkinter,您可以执行以下操作.... 我在网上找到了它

# KeyLogger_tk2.py
# show a character key when pressed without using Enter key
# hide the Tkinter GUI window, only console shows

try:
   # Python2
    import Tkinter as tk
except ImportError:
    # Python3
    import tkinter as tk

def key(event):
"""shows key or tk code for the key"""
    if event.keysym == 'Escape':
        root.destroy()
    if event.char == event.keysym:
     # normal number and letter characters
        print( 'Normal Key %r' % event.char )
    elif len(event.char) == 1:
      # charcters like []/.,><#$ also Return and ctrl/key
        print( 'Punctuation Key %r (%r)' % (event.keysym, event.char) )
    else:
      # f1 to f12, shift keys, caps lock, Home, End, Delete ...
        print( 'Special Key %r' % event.keysym )


root = tk.Tk()
print( "Press a key (Escape key to exit):" )
root.bind_all('<Key>', key)
# don't show the tk window
root.withdraw()
root.mainloop()

3
如果目标是一个小型、简洁的脚本,那么它涉及的复杂性就相当大了。真的没有一个或两行代码的解决方案吗? - daniel

2
这就是您可以使用ncurses完成的方式。与TkInter不同,不需要X11。
#! /usr/bin/python

import curses

screen = curses.initscr()
try:
    curses.noecho()
    curses.curs_set(0)
    screen.keypad(1)
    screen.addstr("Press a key")
    event = screen.getch()
finally:
    curses.endwin()

if event == curses.KEY_LEFT:
    print("Left Arrow Key pressed")
elif event == curses.KEY_RIGHT:
    print("Right Arrow Key pressed")
else:
    print(event)

0

Curses也在标准库中,不是吗? - Jacqlyn
@JFA: 它不在Windows上,但你可以在那里获得它。 - ArtOfWarfare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接