2016-09-30 50 views
0

我已經遍地搜索了。檢測鍵是否關閉mac python

我有一個python應用程序,我想檢測一個鍵是否關閉(在OSX上)。

我已經能夠找到的唯一答案是用於Windows的庫或需要應用程序窗口處於活動狀態的庫(如pygame)。

與pymouse具有position()方法類似。

我希望能夠做一些事情在我的代碼,如:

if keyboard.keydown(<key code>): 
    # do something 
elif keyboard.keycode(<some other keycode>): 
    # do something 

在Mac。

+1

超過2k並且沒有代碼?另外,爲什麼你想要檢測一個鍵是否被按下,如果不是在交互式環境中(這需要額外的庫)? – Jan

+0

我構建了一個應用程序,它可以截取用戶屏幕的屏幕截圖,並在後臺執行操作,然後再次與屏幕交互。我希望能夠允許用戶使用向上和向下鍵來調整應用程序的某些部分的速度。它不是具有GUI的應用程序 – K2xL

+0

您的意思是一個特定的鍵或一般鍵? – coder

回答

1

我能想到的唯一方法是ttytermios

這裏是等待用戶輸入並打印鍵碼,如果「一」壓...

#!/usr/bin/env python 

    import sys,tty 
    tty.setcbreak(sys.stdin) 
    key = ord(sys.stdin.read(1)) # key captures the key-code 
    # based on the input we do something - in this case print something 
    if key==97: 
     print "you pressed a" 
    else: 
     print "you pressed something else ..." 
    sys.exit(0) 

希望它可以幫助一個小例子!

說明:此解決方案專指linux/mac操作系統 - 對於windows還有其他方法!

-1

Python comex with tkinter,一個包含跨平臺按鍵和釋放處理的GUI框架。如果只需要事件處理,則可以抑制gui部分。這在我的Windows機器上按預期工作。它應該在你的Mac上運行。

from time import sleep 
import tkinter as tk 
root = tk.Tk() 
root.withdraw() # Do not show root window. 
spacedown = False 
def press_s(dummy): 
    global spacedown 
    spacedown = True 
    print('down') 
def release_s(dummy): 
    global spacedown 
    spacedown = False 
    print('up') 
root.bind('<KeyPress- >', press_s) 
root.bind('<KeyRelease- >', release_s) 
while True: 
    sleep(1) 
    root.update() 
    print('tick', 'down' if spacedown else 'up') 

在綁定語句,所述-與鍵(如a*)或keyname後更換空間。無論何時您想要檢測密鑰的當前狀態,請調用root.update來處理排隊的事件並設置keydown。

-2

您可以使用輸入命令 真棒=輸入(「如何真棒你」)

儘管這需要用戶按輸入

,那麼你可以做這樣的事情 打印(真棒)