2014-01-25 2 views
3

액세스 할 수 없습니다,이 PyObjC (python3.3)를 기반으로 간단한 APPPyObjC의 응용 프로그램은 OSX 매버릭의 접근성 API를

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 

그것을 실행하고 접근성 액세스 권한을 부여해야 시스템 환경 설정의 터미널 -> 개인 정보 보호 & 보안 -> 접근성

글로벌 모니터가 작동하는 것을 볼 수 있습니다.

은 그 때 나는

python3 setup.py bdist_mac 

내가 OSX 시스템 로그에 오류를보고 있어요

open build/Test.app 

build/Test.app 

로 끝 나 cx_Freeze로 동결

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

"시스템 환경 설정"-> "개인 정보 보호 & 보안"-> "접근성"에서 "테스트"에 대한 액세스가 작동하지 않았습니다.

내가 여기에 누락 되었습니까?

업데이트 : 아마도 글로벌 이벤트 모니터 작업을 만든 py2app (0.8)를 사용하여 cx_Freeze의 문제 였을 것입니다. Ronald Oussoren의 힌트를 주셔서 감사합니다 (아래의 대답 & 참조).

답변

2
이 setup.py 파일을 사용하여 py2app와 나를 위해 일을

이 나 cx_Freeze 작동하지 않는 이유를 모르겠어요, 그것은 않습니다 : 나는 응용 프로그램을 실행할 때

입니다
from setuptools import setup 

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

, 제공 그것은 내게 필요한 옵션 액세스 및 Console.app에서 응용 프로그램에서 로깅을 볼 응용 프로그램을 다시 실행합니다.

+0

감사합니다. 나는 그것이 py2pp로 제작 된 후에 앱을 정확히 시작한 방법에 관심이 있습니다. 그것을 두 번 클릭 했습니까? 아니면 "열린"명령을 사용 했습니까? 그것은 .app 자체를 시작할 때가 아니라 커맨드 라인에서 직접 실행 가능한 앱을 특별히 실행하면 (cx_Freeze로) 나를 위해 작동합니다. – Shawn

+0

"open"을 사용하여 응용 프로그램을 시작했습니다. –

+0

Python3을 사용하여 py2app를 OSX Maverick에 설치 한 후 처음으로 빌드 할 때 문제가 발생했습니다 : error : 해당 파일이나 디렉토리가 없습니다 : /usr/local/lib/python3.3/site-packages/setuptools-2.1- py3.3.egg/_markerlib/__ init __. pyc 그 순간 고정되어 있는지 궁금합니다. 나는 이전에 그것을 고칠 수 없었기 때문에 나는 cx_Freeze로 전환했다. – Shawn