[英]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.