[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()