⌛
PyQt5のProgressBarを使いやすくする
tqdmっぽく使いたい
pyqtSignalを使う方法もあるが,ほとんどの場合でforループ等で使われると思うため
tqdmみたいにlistを渡すと簡単にプログレスバーを更新したい
イテレータで実装できそう...
スクリプト
progress_bar_util.py
class ProgressBarUtil(object):
def __init__(self, list, progress_bar) -> None:
self.progress_bar = progress_bar
self.iter = iter(list)
self.max = len(list)
self.val = 0
self.progress_bar.setValue(0)
def __iter__(self):
return self
def __next__(self):
self.val += 1
self.progress_bar.setValue(self.val/self.max * 100)
if self.val > self.max:
raise StopIteration()
return self.iter.__next__()
使い方
import time
from progress_bar_util import ProgressBarUtil
for i in ProgressBarUtil(range(7), ui.progress_bar):
print(i)
time.sleep(1)
example
Discussion