无法使用 pyside Qprocess 启动 exe 文件

Posted

技术标签:

【中文标题】无法使用 pyside Qprocess 启动 exe 文件【英文标题】:unable to start exe file with pyside Qprocess 【发布时间】:2021-02-14 22:26:39 【问题描述】:

我无法从 pyside GUI 启动 exe 文件, 我试图浏览一个 exe 文件并打开它,但我可以看到 qprocess 文档太少,我找不到正确运行它的方法

这是我的代码

   def run_automatch(self):
    file_path, _ = QFileDialog.getOpenFileName(self, 'Single File', 
                                                       QtCore.QDir.currentPath(),'*.exe')
    p = QProcess()
    p.setProgram(file_path)
    p.setWorkingDirectory(QtCore.QDir.currentPath())
    p.start()

【问题讨论】:

【参考方案1】:

这个问题可能是因为“p”是一个局部变量,所以它会在run_automatch完成后立即销毁。一个可能的解决方案是创建一个作为类属性的列表并存储 QProcesses:

def __init__(self, ...):
    # ...

    self.processes = []

def run_automatch(self):
    file_path, _ = QFileDialog.getOpenFileName(
        self, "Single File", QtCore.QDir.currentPath(), "*.exe"
    )
    if not file_path:
        return

    p = QProcess()
    p.setProgram(file_path)
    p.setWorkingDirectory(QtCore.QDir.currentPath())
    p.start()

    self.processes.append(p)

【讨论】:

对此进行了尝试,并为 p 和进程列表输出添加了打印语句,如下所示 []并且exe文件没有工作 @HoussamFarag 我不明白您的评论,请更好地解释自己,否则将无法帮助您 def run_automatch(self): file_path, _ = QFileDialog.getOpenFileName(self, 'Single File', QtCore.QDir.currentPath(), '*.exe') p = QProcess() p. setProgram(file_path) p.setWorkingDirectory(QtCore.QDir.currentPath()) p.start() print(p) self.processes.append(p) print(self.processes) @HoussamFarag 以同样的方式返回,在您发表连贯的评论之前,我不会回答任何问题,我将继续前进。使用这种类型的 cmets,您不鼓励帮助您。 “exe文件不起作用”是什么意思?如果您需要更多帮助,则必须提供minimal reproducible example,因为错误可能出在您未显示的部分。 我将进程列表添加到类 init 并为 p 和进程列表添加了 2 个打印语句,输出如您在第一条评论中看到的显示进程和进程列表但 exe文件没有被执行

以上是关于无法使用 pyside Qprocess 启动 exe 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PySide 中获取 QProcess 运行的命令的输出?

Pyside:多个 QProcess 输出到 TextEdit

Qt:无法使用 QProcess 启动 Windows 控制台

QProcess 失效且无法重新启动

QProcess 无法启动进程:未找到进程

QProcess 没有启动