3

当我在 Mac OS X 上使用 subprocess.Popen 启动应用程序时,它会在后台启动,您必须单击 Dock 中的图标才能将其带到前面。我怎样才能让它在前台开始?

我曾尝试使用“打开”,但这会创建和不需要的终端窗口。

注意:该应用程序是从使用 wxPython 编写的 GUI 应用程序启动的。

4

2 回答 2

3

我认为您将需要使用本机 API 和一些 python 绑定。

NSRunningApplication和它的方法activateWithOptions是你所需要的。这是一个如何使用它的示例:如何使用 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()
于 2012-05-18T15:54:23.110 回答
2

Snies' answer worked for me. However, since you only need NSRunningApplication and NSApplicationActivateIgnoringOtherApps, you might as well not import everything else. The following worked for me and was considerably faster:

from Cocoa import NSRunningApplication, NSApplicationActivateIgnoringOtherApps
pid = 1456 
x = NSRunningApplication.runningApplicationWithProcessIdentifier_(pid)
x.activateWithOptions_(NSApplicationActivateIgnoringOtherApps)
于 2014-08-28T23:16:00.043 回答