如何在wxPython应用程序中使用Mac OS X NSEvents?

2024-09-25 02:41:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个应用程序,它必须对macosx上的系统范围的按键做出反应

因此,我找到了一些键记录器示例,这些示例应该很管用,因为所有示例都基于NSSharedApplication()和PyObjCAppHelper.runEventLoop()而我的应用程序是用wxPython编写的。你知道吗

在这里,我对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。你知道吗

应用后=wx.应用程序()正确返回NSApp()。为什么这不管用呢?我该怎么做?你知道吗


Tags: importeventapp应用程序示例系统defmacosx
1条回答
网友
1楼 · 发布于 2024-09-25 02:41:06

由于没有人回答,我从不同的视角四处寻找。你知道吗

所以我发现石英模块可以用来获取键盘和鼠标事件。因此,不需要自定义循环wx.应用程序()和wx.App.MainLoop程序()没有妨碍。你知道吗

我还发现了一个名为pynput的很好的包,它只为我做了这些,从而节省了我大量的时间。Quartz相当复杂,函数和常量有很多混乱的名称。但它做得很好。你知道吗

相关问题 更多 >