我正在尝试使用PyQt为名为“HandBrake”的视频转换器应用程序构建一个简单的GUI。子进程Popen阻止PyQt图形用户界面
我的问题是,当我选择一个视频文件进行转换时,子进程Popen用必要的参数启动手刹应用程序,但在等待手刹结束时,gui被阻止,因此我无法做任何更改。 (例如:我不能禁用pushButton,也不能更改它的文本)
我不是在寻找更复杂的解决方案,例如进度条等,但我只想简单地禁用按钮并在等待时更改其文本为程序完成转换。
我该怎么用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
使用一个单独的线程或使用'multiprocessing'。 – 2011-04-10 18:50:00