簡體   English   中英

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

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM