1

トップレベル ウィジェットにプログレス バーを表示し、完了するまで数秒ごとに段階的に増加させようとしています。

「開始」をクリックすると、プログレスバーウィジェットが表示されるまでに数秒の遅延があります。表示されても、進行状況バーはまったく増加しません。

これが私がこれまでに試したことです:

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 ループをコメント アウトすると、[開始] をクリックした直後にプログレス バーが表示されることがわかりました。ただし、以前と同様に、実際のバーは増加しません。

誰かが私が間違っていることを指摘してもらえますか?

4

2 に答える 2