将b.py文件中的tqdm的进度同步到a.py文件的PyQt5的QProgressBar中
时间: 2024-02-16 10:00:13 浏览: 121
Python中.py文件打包成exe可执行文件详解
5星 · 资源好评率100%
要将b.py文件中的tqdm的进度同步到a.py文件的PyQt5的QProgressBar中,可以使用以下步骤:
1. 在a.py文件中创建一个窗口类,并在其中包含一个QProgressBar对象。
2. 在b.py文件中,定义一个函数,该函数包含一个tqdm循环。在循环中,使用一个回调函数来更新进度条的值。
3. 在a.py文件中,使用subprocess模块来调用b.py文件,并将回调函数作为命令行参数传递给b.py文件。
以下是一个示例代码,可以将b.py文件中的tqdm的进度同步到a.py文件的PyQt5的QProgressBar中:
a.py文件:
```python
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow, QProgressBar
import sys
import subprocess
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.progress_bar = QProgressBar(self)
self.progress_bar.setGeometry(30, 40, 200, 25)
self.show()
def set_value(self, value):
self.progress_bar.setValue(value)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
cmd = ['python', 'b.py', str(window.set_value)]
process = subprocess.Popen(cmd)
app.exec_()
```
在a.py文件中,我们首先创建了一个MainWindow类,该类包含一个QProgressBar对象。我们还定义了set_value()方法,以便在每次迭代时更新进度条的值。
在if __name__ == '__main__':语句中,我们使用subprocess模块来调用b.py文件。在cmd列表中,我们将回调函数作为命令行参数传递给b.py文件。
b.py文件:
```python
from tqdm import tqdm
import sys
def update_progress(value):
progress_callback = eval(value)
for i in tqdm(range(100), desc='Processing', unit='iterations', leave=False, dynamic_ncols=True, file=None, ncols=80, mininterval=0.1, maxinterval=10.0, miniters=None, ascii=None, disable=False, unit_scale=None, unit_divisor=None, gui=False, position=None, postfix=None, initial=None, bar_format=None, smoothing=0.3, bar_update_interval=1):
progress_callback(i)
if __name__ == '__main__':
update_progress(sys.argv[1])
```
在b.py文件中,我们定义了update_progress()函数,该函数包含了一个tqdm循环。在循环中,我们使用回调函数来更新进度条的值。
如果我们将a.py和b.py文件保存在同一个文件夹中,那么当我们运行a.py文件时,它将会调用b.py文件,并将回调函数作为命令行参数传递给b.py文件。在b.py文件中,我们将回调函数作为字符串进行了解析,并在循环中使用该函数来更新进度条的值。
阅读全文