gpt4 book ai didi

python - 子进程 Popen 阻塞 PyQt GUI

转载 作者:太空宇宙 更新时间:2023-11-04 06:57:46 25 4
gpt4 key购买 nike

我正在尝试使用 PyQt 为名为“HandBrake”的视频转换器应用程序构建一个简单的图形用户界面。

我的问题是,当我选择要转换的视频文件时,子进程 Popen 使用必要的参数启动 handbrake 应用程序,但在等待 handbrake 完成时,gui 被阻止,因此我无法进行任何更改。 (例如:我无法禁用按钮也无法更改其文本)

我不是在寻找更复杂的解决方案,例如进度条等,但我只想在等待程序完成转换时禁用按钮并更改其文本。

我怎样才能用 python 和 pyqt 做这样的事情?

def videoProcess():
self.pushButton.setEnabled(0)
self.pushButton.setText("Please Wait")
command = "handbrake.exe -i somefile.wmv -o somefile.mp4"
p = subprocess.Popen(str(command), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while 1:
line = p.stdout.readline()
if not line:
self.pushButton.setEnabled(1)
break

最佳答案

既然你已经在 Qt 领域,你可以做这样的事情:

from PyQt4.QtCore import QProcess

class YourClass(QObject):

[...]

def videoProcess(self):
self.pushButton.setEnabled(0)
self.pushButton.setText("Please Wait")
command = "handbrake.exe"
args = ["-i", "somefile.wmv", "-o", "somefile.mp4"]
process = QProcess(self)
process.finished.connect(self.onFinished)
process.startDetached(command, args)

def onFinished(self, exitCode, exitStatus):
self.pushButton.setEnabled(True)

[...]

http://doc.qt.io/qt-5/qprocess.html

关于python - 子进程 Popen 阻塞 PyQt GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5613922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com