gpt4 book ai didi

python - PyObjC 应用程序不允许访问可访问性 API

转载 作者:行者123 更新时间:2023-11-28 17:43:25 39 4
gpt4 key购买 nike

在 OSX Maverick 上,我有这个基于 PyObjC(python3.3) 的简单 APP

test.py

class MyDelegate(NSObject):

def applicationDidFinishLaunching_(self, sender):
NSEvent.addGlobalMonitorForEventsMatchingMask_handler_(NSKeyDownMask, lambda event: NSLog("hello"))
NSApp.activateIgnoringOtherApps_(YES)

delegate = MyDelegate.alloc().init()
app = NSApplication.sharedApplication()
app.setDelegate_(delegate)

menu = NSMenu.alloc().initWithTitle_("My Menu")
app.setMainMenu_(menu)

window = NSWindow.alloc().initWithContentRect_styleMask_backing_defer_(
NSMakeRect(0, 0, 100, 100),
NSTitledWindowMask,
NSBackingStoreBuffered,
NO
)

window.setTitle_("my app")
window.makeKeyAndOrderFront_(None)

windowController = NSWindowController.alloc().initWithWindow_(window)


AppHelper.runEventLoop()

运行它

python3 test.py

并在系统偏好设置 -> 隐私与安全 -> 辅助功能中授予对终端的辅助访问权限

我可以看到全局监视器工作。

然后我用cx_Freeze卡住了它

python3 setup.py bdist_mac

结束于

build/Test.app

open build/Test.app

我在 OSX 系统日志中看到错误

universalAccessAuthWarn[546]: AccessibilityAPI: pid 3809, is not allowed to access the accessibility API. Path: /path/to/build/Test.app/Contents/MacOS/test

我在“系统偏好设置”->“隐私和安全”->“辅助功能”中启用了“测试”访问权限,但它不起作用。

我在这里缺少什么?

更新:可能是 cx_Freeze 的问题,使用 py2app(0.8) 使全局事件监视器工作。感谢 Ronald Oussoren 的提示(请参阅下面的回答和评论)。

最佳答案

我不知道为什么这不适用于 cx_Freeze,它确实适用于使用此 setup.py 文件的 py2app:

from setuptools import setup

setup(
name='main',
app=['test.py'],
setup_requires=['py2app'],
)

也就是说,当我启动该应用程序时,为其提供可访问性访问权限,然后重新启动该应用程序,我在 Console.app 中看到从该应用程序进行的日志记录。

关于python - PyObjC 应用程序不允许访问可访问性 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21347251/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com