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
Author And Source
この問題について(PyQt5のProgressBarを使いやすくする), 我々は、より多くの情報をここで見つけました https://zenn.dev/suisuiso/articles/ce4c6a4603d9e4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol