2012-05-18 2 views
2

Mac OS X에서 하위 프로세스로 애플리케이션을 시작하면 백그라운드에서 시작되며 선창의 아이콘을 클릭해야 전면으로 이동합니다. 포 그라운드에서 어떻게 시작할 수 있습니까?Mac OS X에서 Python으로 포 그라운드에서 앱을 시작하는 방법은 무엇입니까?

나는 "open"을 사용해 보았지만, 이는 원치 않는 터미널 창을 생성합니다.

참고 :이 응용 프로그램은 wxPython을 사용하여 작성된 GUI 응용 프로그램에서 시작됩니다.

답변

2

네이티브 API와 일부 파이썬 바인딩을 사용해야 할 것입니다.

NSRunningApplication 및 그 방법은 activateWithOptions입니다. 다음은 사용 방법의 예입니다. How to launch application and bring it to front using Cocoa api?

바인딩을 보려면 PyObjC을보십시오.

from Foundation import * 
from Cocoa import * 
import objc 

pid = 1456 
x = NSRunningApplication.runningApplicationWithProcessIdentifier_(pid) 
x.activateWithOptions_(NSApplicationActivateAllWindows) 

업데이트 :

다음 줄 응용 프로그램을 활성화에 더 공격적이다.

x.activateWithOptions_(NSApplicationActivateIgnoringOtherApps) 

또한 먼저 응용 프로그램을 .unhide()해야 할 수도 있습니다.

x.hide()  
x.unhide() 
+0

답장을 보내 주셔서 감사합니다. open을 -a 플래그와 함께 사용하면 터미널이 생성되지 않는다는 것을 알게되었습니다. –

+0

PyObjC는 OSX와 함께 제공되므로 설치하지 않아도됩니다. 또한 답변에 대한 업데이트를 확인하십시오. – snies

0

저의 답변이 저에게 효과적이었습니다. 그러나 NSRunningApplication 및 NSApplicationActivateIgnoringOtherApps 만 필요하므로 다른 모든 것은 가져 오지 못할 수도 있습니다. 다음은 나를 위해 일했고 상당히 빨랐습니다 :

from Cocoa import NSRunningApplication, NSApplicationActivateIgnoringOtherApps 
pid = 1456 
x = NSRunningApplication.runningApplicationWithProcessIdentifier_(pid) 
x.activateWithOptions_(NSApplicationActivateIgnoringOtherApps) 
관련 문제