2017-12-12 13 views
0

毎時私の壁紙を変更するPythonプログラムを作成していますが、特定のボタンを押したときに壁紙を変更することもできます。Pythonはスタックされずにキーボード入力を受け取ります

これは私が

while True: 
    key = ord(getch()) 

を試してみたが、唯一の悪い部分は私が何かを押すまでそれはそれで立ち往生ということであるコードです。これを行うより良い方法はありますか?

答えて

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として実行する必要があります。

0

私は何とか偶然これを見つけました。

import msvcrt 

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

これはうまくいくようです。私はmsvcrt.kbhit()がキー押しを待っていると思います。 Key = ord(getch())がキー入力を受け取り、Key == 96の場合:そのキーが押されているかどうかを確認します

関連する問題