2016-09-30 85 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

您可以使用输入命令 真棒=输入(“如何真棒你”)

尽管这需要用户按输入

,那么你可以做这样的事情 打印(真棒)