[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ただいまコメントを受けつけておりません。
multi_prog_win = None
class MultiProgressWin(object):
WIDTH = 300
def __init__(self, title="MultiProgressWin", max=100, display_text=""):
self.showwin = False
if multi_prog_win is None:
global multi_prog_win
multi_prog_win = cmds.window(t=title, w=self.WIDTH, s=False)
cmds.showWindow(multi_prog_win)
self.showwin = True
self.__add_bar(display_text, max)
cmds.refresh()
def __add_bar(self, display_text, max):
self.layout = cmds.columnLayout(p=multi_prog_win)
self.text = cmds.text(display_text, p=self.layout)
self.bar = cmds.progressBar(maxValue=max, w=self.WIDTH, p=self.layout, progress=0)
# デフォルトの高さが39ずつ増えていたのでキリが良いように40増やしてみる
preHeight = cmds.window(multi_prog_win, q=True, height=True)
global multi_prog_win
cmds.window(multi_prog_win, edit=True, h=preHeight + 40)
def update(self, display_text=None, step=1):
'''
プログレスバーを動かす。
通常は1ずつ増加
'''
cmds.progressBar(self.bar, e=True, step=step)
if display_text is not None:
cmds.text(self.text, e=True, l=display_text)
cmds.refresh()
progress = cmds.progressBar(self.bar, q=True, progress=True)
max = cmds.progressBar(self.bar, q=True, maxValue=True)
global multi_prog_win
preHeight = cmds.window(multi_prog_win, q=True, height=True)
if progress == max and preHeight - 40 > 0: # 0以下になったときのエラー回避
cmds.window(multi_prog_win, edit=True, h=preHeight - 40)
def reset(self, display_text=None):
'''
プログレスバーのリセット
'''
cmds.progressBar(self.bar, e=True, progress=0)
if display_text is not None:
cmds.text(self.text, e=True, l=display_text)
cmds.refresh()
def kill(self):
'''
作ったものを削除。
Windowを生成していたらWindowが消えるが、
追加プログレスバーの場合だったらプログレスバーだけ消える
'''
if self.showwin is False:
cmds.deleteUI(self.layout, control=True)
return
global multi_prog_win
cmds.deleteUI(multi_prog_win)
del multi_prog_win
def test(text=u"一つ追加"):
pw = MultiProgressWin(display_text=text, max=100)
for i in range(100):
pw.update(text)
time.sleep(0.02)
pw.kill()
def test2():
text=u"追加一つ目"
pw = MultiProgressWin(display_text=text, max=100)
for i in range(100):
pw.update(text)
time.sleep(0.02)
if i == 50:
test(u"二つ目追加!!")
text=u"2つ目が終わったので再開"
pw.kill()
pw = MultiProgressWin(display_text="ベースのプログレスバー" ,max=5)
time.sleep(1)
pw.update()
time.sleep(1)
pw.update("プログレスバー1つ追加するよ")
time.sleep(1)
test()
pw.update("ベースのプログレスバー")
time.sleep(1)
pw.update("プログレスバー2つ追加するよ")
time.sleep(1)
test2()
pw.update()
time.sleep(1)
pw.reset("リセットもできる")
time.sleep(2)
pw.kill()