imageName = re.findall('[^/]+$', self.fileName[0]) name, _ = str(imageName[0]).split('.') FOM_Module = hub.Module(name="first_order_motion") FOM_Module.generate(source_image="{}".format(self.fileName[0]), # 输入图像 driving_video="{}".format(self.fileName[1]), # 输入驱动视频 ratio=0.4, image_size=256, output_dir=f'{self.output_dir}/', # 输出文件夹 filename=f'{name}.mp4', # 输出文件名 use_gpu=False)用pyqt5的进度条实时显示进度实时
时间: 2023-12-19 15:07:03 浏览: 71
android_sd_img.zip_sd.img
要实时显示进度,可以在函数内添加一个信号(signal),用于发送进度条的当前值。然后在主程序中连接这个信号到一个槽(slot),用于更新进度条的值。
以下是一个可能的实现:
```python
from PyQt5.QtCore import QObject, pyqtSignal
class FOMWorker(QObject):
progressChanged = pyqtSignal(int) # 定义一个信号
def run(self):
imageName = re.findall('[^/]+$', self.fileName[0])
name, _ = str(imageName[0]).split('.')
FOM_Module = hub.Module(name="first_order_motion")
FOM_Module.generate(source_image="{}".format(self.fileName[0]),
driving_video="{}".format(self.fileName[1]),
ratio=0.4,
image_size=256,
output_dir=f'{self.output_dir}/',
filename=f'{name}.mp4',
use_gpu=False)
# 发送进度条当前值,最大值为 100
self.progressChanged.emit(100)
class MyWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.progressBar = QtWidgets.QProgressBar(self) # 创建进度条
self.setCentralWidget(self.progressBar)
self.worker = FOMWorker()
self.worker.progressChanged.connect(self.updateProgress) # 连接信号和槽
self.thread = QtCore.QThread()
self.worker.moveToThread(self.thread)
self.thread.started.connect(self.worker.run)
self.thread.start()
def updateProgress(self, value):
self.progressBar.setValue(value) # 更新进度条的值
```
在主程序中,我们创建了一个 `FOMWorker` 类,其中包含一个 `run` 函数,用于执行 FOM 的生成过程,并发送进度条当前值。在主程序中,我们创建了一个 `MyWindow` 类,其中包含一个进度条 `progressBar`,并将 `FOMWorker` 实例化为 `worker`,将它移到一个新的线程 `thread` 中运行。然后,我们连接 `FOMWorker` 的 `progressChanged` 信号到 `MyWindow` 的 `updateProgress` 槽,用于更新进度条的值。当 `thread` 启动时,会自动执行 `worker.run()` 函数。
阅读全文