2012-05-18 110 views
2

當我使用Mac OS X上的subprocess.Popen啓動應用程序時,它會在後臺啓動,並且必須單擊擴展塢中的圖標才能將其顯示在前面。我如何才能在前臺開始?如何在使用Python的Mac OS X上的前臺啓動應用程序?

我曾嘗試使用「打開」,但創建和不需要的終端窗口。

注意:應用程序正在從使用wxPython編寫的GUI應用程序啓動。

回答

2

我想你將需要使用本地API和一些python綁定。

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

感謝您的答覆。我發現使用-a標誌打開並且不會創建終端。 –

+0

PyObjC與OSX一起發貨,您不必安裝它。同時檢查我的更新到答案。 – snies

0

Snies的答案爲我工作。但是,由於您只需要NSRunningApplication和NSApplicationActivateIgnoringOtherApps,因此您可能不會導入其他任何內容。下面的工作對我來說是相當快:

from Cocoa import NSRunningApplication, NSApplicationActivateIgnoringOtherApps 
pid = 1456 
x = NSRunningApplication.runningApplicationWithProcessIdentifier_(pid) 
x.activateWithOptions_(NSApplicationActivateIgnoringOtherApps) 
相關問題