当我在Mac上用subprocess.Popen启动一个应用程序时,它是在后台启动的,你必须点击dock中的图标才能把它带到前台。我怎么才能让它从前台开始?
我尝试过使用"open",但这会创建一个不需要的终端窗口。
注意:该应用程序是从使用wxPython编写的图形用户界面应用程序启动的。
发布于 2012-05-18 23:54:23
我认为你需要使用原生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()发布于 2014-08-29 07:16:00
斯奈斯的回答对我很有效。但是,由于您只需要NSRunningApplication和NSApplicationActivateIgnoringOtherApps,所以您最好不要导入其他所有内容。下面的代码对我来说很有效,而且速度更快:
from Cocoa import NSRunningApplication, NSApplicationActivateIgnoringOtherApps
pid = 1456
x = NSRunningApplication.runningApplicationWithProcessIdentifier_(pid)
x.activateWithOptions_(NSApplicationActivateIgnoringOtherApps)https://stackoverflow.com/questions/10655484
复制相似问题