毎時私の壁紙を変更するPythonプログラムを作成していますが、特定のボタンを押したときに壁紙を変更することもできます。Pythonはスタックされずにキーボード入力を受け取ります
これは私が
while True:
key = ord(getch())
を試してみたが、唯一の悪い部分は私が何かを押すまでそれはそれで立ち往生ということであるコードです。これを行うより良い方法はありますか?
毎時私の壁紙を変更するPythonプログラムを作成していますが、特定のボタンを押したときに壁紙を変更することもできます。Pythonはスタックされずにキーボード入力を受け取ります
これは私が
while True:
key = ord(getch())
を試してみたが、唯一の悪い部分は私が何かを押すまでそれはそれで立ち往生ということであるコードです。これを行うより良い方法はありますか?
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として実行する必要があります。
私は何とか偶然これを見つけました。
import msvcrt
if msvcrt.kbhit():
Key = ord(getch())
if Key ==96:
#Do something here
これはうまくいくようです。私はmsvcrt.kbhit()がキー押しを待っていると思います。 Key = ord(getch())がキー入力を受け取り、Key == 96の場合:そのキーが押されているかどうかを確認します