【发布时间】:2015-11-03 07:42:15
【问题描述】:
如果我从 Python GUI 应用程序 (PySide) 中启动外部应用程序,有没有办法安装“退出”信号,以便在用户退出/关闭外部应用程序时发出通知?
我知道有 subprocess.poll() 和 subprocess.wait(),但我更关注的是信号/槽程序,而不是轮询程序。如果有其他选项,不使用子流程,我也很乐意实现它们。
这是我目前正在玩弄的方法:
def eventFilter(self, source, event):
if event.type() == QtCore.QEvent.Close/ChildRemoved/etc.:
print("App closed!")
self.AppClosedHandler()
self.App = subprocess.Popen([r'C:\WINDOWS\SYSTEM32\some_application.exe'], shell=True)
self.App.installEventFilter(self)
很遗憾,您无法在 Popen 上安装事件过滤器。
【问题讨论】:
-
这必须在哪些平台上运行?您是否可以控制其他应用程序的源代码?为什么不能使用
wait()或poll()? -
这必须在 Windows 上工作,主要是 64 位 8.1。我无法控制其他应用程序的源代码,我只是调用应用程序 .exe。我可以使用 wait() 或 poll(),我只是希望有一个好的信号可用。如下所示,我认为 QProcess.finished() 信号是我所追求的。
-
请将您的解决方案作为答案发布,而不是将其编辑到您的问题中。
标签: python subprocess pyside