Остановить индикатор на максимальном значении - PullRequest
0 голосов
/ 19 апреля 2019

Я создал индикатор выполнения с Tkinter:

self.progressbar = ttk.Progressbar(self, orient="horizontal", length=300, maximum=100, mode="determinate")
self.progressbar.place(x=250, y=225)

И я запускаю его, когда нажимаю кнопку:

self.progressbar.start(10)

Но я бы хотел, чтобы он остановился наконец индикатора выполнения и затем что-то еще (в моем случае откройте текстовый файл), например:

def LaunchButton()
    self.progressbar.start(10)
    if end of progress bar
        self.progressbar.stop()
        open text file 

Спасибо за помощь!

Редактировать для @Saad:

Функция кнопки «Мой запуск»:

    def launchCallBack(self):

        self.dataName = self.EditText.get("1.0", 'end-1c')
        self.dataPath = self.PathText.get(ACTIVE)
        self.dataDirectory = self.Directory.get(ACTIVE)

        print(self.dataDirectory)

        if self.dataPath == '' :
            messagebox.showinfo("error", "Please select a XML (.aird) File before launching !")
        elif '.' in self.dataName :
            messagebox.showinfo("error", "You don't have to put extension (.ctm), just put the name of your file !")
        elif self.dataName == '' :
            messagebox.showinfo("error", "Please name your Text (.ctm) File before launching")
        elif self.dataDirectory == '' :
            messagebox.showinfo("error", "Please select a directory to put your Text (.ctm) File in !")
        else :
            self.textFileCreation()

Функция textFileCreation - это ваша функция обновления:

    def textFileCreation(self):

        self.process += 10
        self.progressbar['value'] = self.process
        if self.progressbar['value'] >= self.progressbar['maximum']:
            msg_succes = str("The file " + self.dataName + ".ctm has been created in the folder : " + self.dataDirectory)
            messagebox.showinfo("success", msg_succes)
            create_file(self.dataPath, self.dataName, self.dataDirectory)
            return
        else :
            self.after(100, self.textFileCreation())

1 Ответ

1 голос
/ 19 апреля 2019

Вот пример:

from tkinter import ttk
from tkinter import *

root = Tk()

P = ttk.Progressbar(root, orient="horizontal", length=300, maximum=100, mode="determinate")
P.pack()

L = Label(root, text="In Process")
L.pack()

process = 0
def update():
    global process
    process += 10
    P['value'] = process
    if P['value'] >= P['maximum']:

        L['text'] = "The Process is done!"
        # Here you can do anything when the  progress bar finishes.

        return  # This will end the after() loop
    root.after( 100, update )

update()

root.mainloop()

Также я изменяю вашу функцию LaunchButton() на соответствующую работу.Но объявляйте self.process = 0 в __init__ вашего класса

Функция

def LaunchButton(self):
    self.process += 10
    self.progressbar['value'] = self.process
    if self.process >= self.progressbar['maximum']:

        # Here you can do anything when the progress bar finishes.
            # open text file

        return      # This will end the after() loop

    self.after(100, self.LaunchButton)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...