Python获得键盘输入而不会卡住

时间:2017-12-12 19:15:19

标签: python python-2.7 wallpaper

我正在制作一个每小时更改我的壁纸的python程序,但我希望能够在按下某个按钮时更改壁纸。

这是我试过的代码

while True:
    key = ord(getch())

但唯一不好的部分是它会被卡住,直到我按下某个东西。有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

您可以使用https://pypi.python.org/pypi/pynput来实现您的目标。

另请参阅有关pythonhosted http://pythonhosted.org/pynput/的文档,尤其是关于监控键盘http://pythonhosted.org/pynput/keyboard.html#monitoring-the-keyboard的部分。

以下是文档中的示例:

from pynput.keyboard import Key
from pynput.keyboard import Listener


def on_press(key):
    print('{0} pressed'.format(
        key))

def on_release(key):
    print('{0} release'.format(
        key))
    if key == Key.esc:
        # Stop listener
        return False

# Collect events until released
with Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()

它将打印您按下的每个键,直到您按 ESC ,之后它将终止。

请注意,有一些特定于操作系统的事情需要考虑,例如在 OSX 上,该进程必须以root身份运行。

答案 1 :(得分:0)

我不小心意外地发现了这一点。

    import msvcrt

    if msvcrt.kbhit():
        Key = ord(getch())
        if Key ==96:
            #Do something here

这似乎有效。我认为msvcrt.kbhit()正在等待按键。 Key = ord(getch())接受按键,如果Key == 96:检查它是否是正确的按键