当我使用Mac OS X上的subprocess.Popen启动应用程序时,它会在后台启动,并且必须单击扩展坞中的图标才能将其显示在前面。我如何才能在前台开始?如何在使用Python的Mac OS X上的前台启动应用程序?
我曾尝试使用“打开”,但创建和不需要的终端窗口。
注意:应用程序正在从使用wxPython编写的GUI应用程序启动。
当我使用Mac OS X上的subprocess.Popen启动应用程序时,它会在后台启动,并且必须单击扩展坞中的图标才能将其显示在前面。我如何才能在前台开始?如何在使用Python的Mac OS X上的前台启动应用程序?
我曾尝试使用“打开”,但创建和不需要的终端窗口。
注意:应用程序正在从使用wxPython编写的GUI应用程序启动。
我想你将需要使用本地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()
Snies的答案为我工作。但是,由于您只需要NSRunningApplication和NSApplicationActivateIgnoringOtherApps,因此您可能不会导入其他任何内容。下面的工作对我来说是相当快:
from Cocoa import NSRunningApplication, NSApplicationActivateIgnoringOtherApps
pid = 1456
x = NSRunningApplication.runningApplicationWithProcessIdentifier_(pid)
x.activateWithOptions_(NSApplicationActivateIgnoringOtherApps)
感谢您的答复。我发现使用-a标志打开并且不会创建终端。 –
PyObjC与OSX一起发货,您不必安装它。同时检查我的更新到答案。 – snies