如何解决如何在python PyQT5中为列表/ for循环中的多个项目运行QProcess
我希望在 for 循环中编码多个 mp3 文件。
使用 python2,我已经成功地使用了一段时间和子进程...通信。当然,在运行编码时冻结 gui。
现在我正在尝试使其适应 python3/QT5。
我是 QProcess 的新手,很明显,这行不通:
!/usr/bin/python3
import sys
from PyQt5 import QtCore,QtGui,QtWidgets
class Console(QtWidgets.QWidget):
process_error_signal = QtCore.pyqtSignal(str)
process_output_signal = QtCore.pyqtSignal(str)
def __init__(self):
super().__init__()
self.editor = QtWidgets.QPlainTextEdit(self)
self.editor.setReadOnly(True)
self.font = QtGui.QFont()
# self.font.setFamily(editor["editorFont"])
self.font.setPointSize(12)
self.layout = QtWidgets.QVBoxLayout()
self.layout.addWidget(self.editor,1)
self.setLayout(self.layout)
self.process_output = None
self.process_error = None
self.editor.setFont(self.font)
self.process = QtCore.QProcess()
self.process.readyReadStandardError.connect(self.on_ready_read_standard_error)
self.process.readyReadStandardOutput.connect(self.on_ready_read_standard_output)
def on_ready_read_standard_error(self):
process_error = self.process.readAllStandardError().data().decode()
self.editor.appendPlainText(process_error)
self.process_error_signal.emit(process_error)
def on_ready_read_standard_output(self):
result = self.process.readAllStandardOutput().data().decode()
self.editor.appendPlainText(result)
self.process_output_signal.emit(result)
def run(self,command):
"""Executes a system command."""
# clear previous text
self.editor.clear()
self.process.start(command)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = Console()
w.show()
w.process_error_signal.connect(lambda process_error: print(process_error))
w.process_output_signal.connect(lambda process_output: print(process_output))
mp3_files = ["file1.mp3","file2.mp3"]
for i in mp3_files:
out_file = str(i)[0:5] + "_enc.mp3"
w.run("lame -b 96 " + i + " " + out_file)
sys.exit(app.exec_())
但是如何正确地为列表中的文件运行QProcess?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。