2012-05-18 77 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) 
相关问题