[英]How to use Mac OS X NSEvents within wxPython application?
我正在编写一个必须对Mac OS X上的系统级按键作出反应的应用程序。
因此,我发现了一些可以正常工作的关键记录器示例,因为当我的应用程序以wxPython编写时,所有示例均基于NSSharedApplication()和PyObjC AppHelper.runEventLoop()。
在这里,我发布了一个我认为应该可行的来自https://github.com/ljos的最简单示例的修改。 但事实并非如此。
from AppKit import *
import wx
class AppDelegate(NSObject):
def applicationDidFinishLaunching_(self, aNotification):
NSEvent.addGlobalMonitorForEventsMatchingMask_handler_(NSKeyDownMask, handler)
def handler(event):
print (u"%@", event)
app = wx.App()
delegate = AppDelegate.alloc().init()
NSApp().setDelegate_(delegate)
app.MainLoop()
显然,MainLoop()不会捕获委托的NSEvents。
在app = wx.App()之后,正确返回了NSApp()。 那为什么不起作用呢? 我该如何运作?
没有人回答,我以不同的角度四处寻找。
因此,我发现Quartz模块可用于获取键盘和鼠标事件。 不需要自定义循环,因此wx.App()和wx.App.MainLoop()不会妨碍您。
我还找到了一个名为pynput的好程序包,它可以为我完成此任务,因此节省了很多时间。 Quartz非常复杂,函数和常量都有很多混乱的名称。 但这做得很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.