Помогите починить Progressbar

Рейтинг: 1Ответов: 1Опубликовано: 17.02.2023

Progressbar не останавливается после того, как дошел до конца, а идет на новый круг.

Не понимаю как это исправить?

import customtkinter as ctk
import tkinter as tk
from tkinter import ttk
import customtkinter as CTk
from PIL import Image


class CTkProgressbar(ctk.CTkFrame):
    def __init__(self, master, *args, **kwargs):
        super().__init__(master, *args, **kwargs)

        self._value = tk.DoubleVar()
        self._value.set(0)

        self.progressbar = ttk.Progressbar(self, variable=self._value, maximum=100.0, mode='determinate')
        self.progressbar.pack(side='left', fill='both', expand=True, padx=10)

    def start(self):
        self.progressbar.start()

    def stop(self):
        self.progressbar.stop()

    def set(self, value):
        self._value.set(value)


class App(ctk.CTk):
    def __init__(self):
        super().__init__()

        self.geometry("500x550")
        self.title("MyApp")
        self.resizable(width=True, height=True)

        ctk.set_appearance_mode("dark")  # Modes: "System" (standard), "Dark", "Light"
        ctk.set_default_color_theme("blue")  # Themes: "blue" (standard), "green", "dark-blue")

        self.numbers = ['X', 'X1.02', 'X4.68', 'X2.17', 'X26.56', 'X1.00','X2.86', 'X1.26', 'X17.11']
        self.current_index = 0

        self.frame_1 = ctk.CTkFrame(master=self)
        self.frame_1.pack(pady=10, padx=10, fill="both", ipadx=10, ipady=10)

        custom_font = ("Helvetica", 60, "bold")
        self.label_1 = CTk.CTkLabel(master=self.frame_1, text=str(self.numbers[self.current_index]), justify=CTk.LEFT,
                                    font=custom_font)
        self.label_1.pack(pady=10, padx=10)

        self.progressbar_1 = CTkProgressbar(self.frame_1)
        self.progressbar_1.pack(pady=10, fill='both')

        self.button_1 = ctk.CTkButton(master=self.frame_1, text='Кнопка', command=self.button_callback)
        self.button_1.pack(pady=30, padx=10, ipadx=10, ipady=10)

        self.logo = CTk.CTkImage(dark_image=Image.open("fly.png"), size=(200, 200))
        self.logo_label = CTk.CTkLabel(master=self, text='', image=self.logo)
        self.logo_label.pack(ipady=10, ipadx=10, expand=1)

        self.lucky_jet_label = CTk.CTkLabel(master=self, text=" ", font=("Aria", 40, "bold"))
        self.lucky_jet_label.pack(pady=1)

    def button_callback(self):
        self.progressbar_1.start()
        self.after(6021, lambda: self.update_label())

    def update_label(self):
        self.progressbar_1.stop()
        self.current_index += 1
        if self.current_index >= len(self.numbers):
            self.current_index = 0
        number = self.numbers[self.current_index]
        self.label_1.configure(text=str(number))


if __name__ == "__main__":
    app = App()
    app.mainloop()

Ответы

▲ 0

В твоем коде мне довольно трудно ориентироваться, но в классическом Tkinter есть функция .update(), попробуй её.