トップレベル ウィジェットにプログレス バーを表示し、完了するまで数秒ごとに段階的に増加させようとしています。
「開始」をクリックすると、プログレスバーウィジェットが表示されるまでに数秒の遅延があります。表示されても、進行状況バーはまったく増加しません。
これが私がこれまでに試したことです:
class MainUI:
def __init__(self, parent):
self.parent = parent
self.counter = IntVar()
self.main_container = Frame(self.parent)
self.main_container.pack()
self.btn_start = Button(self.main_container, command=self.btn_start_click)
self.btn_start.configure(
text="Start", background="Grey",
padx=50
)
self.btn_start.pack(side=LEFT)
def progress_bar(self):
self.pbar_top = Toplevel(self.main_container)
self.download_label = Label(
self.pbar_top,
text="Download Bar"
)
self.download_label.pack(side=TOP)
self.download_bar = ttk.Progressbar(
self.pbar_top, orient="horizontal",
length=400, mode="determinate",
variable=self.counter, maximum=5
)
self.download_bar.pack(side=TOP)
def btn_start_click(self):
self.progress_bar()
for i in range(4):
self.counter = i
time.sleep(1)
root = Tk()
root.title("Progress Bar Test")
main_ui = MainUI(root)
root.mainloop()
btn_start_click 内の for ループをコメント アウトすると、[開始] をクリックした直後にプログレス バーが表示されることがわかりました。ただし、以前と同様に、実際のバーは増加しません。
誰かが私が間違っていることを指摘してもらえますか?