Возможно ли, чтобы ProgressBar достигал 100% после завершения другой функции? - PullRequest
3 голосов
/ 07 октября 2019

В общем, я хотел бы, чтобы Progressbar (виджет Tkinter) достиг 100%, как только закончится другой function, который я запускаю. Прямо сейчас я использую многопоточность, чтобы заставить их работать параллельно, и я рассчитал, сколько времени потребуется для завершения function, и соответственно настроил progressbar. Но что делать, когда function не занимает заданное количество времени и может занять 5 секунд или 3 минуты?

from threading import Thread
import serial
import tkinter as tk
from tkinter import *
import re
from time import sleep
import time



ser = serial.Serial('COM3', timeout=1)
ser.baudrate = 115200
maxTemp = 85

def bar():
    import time
    progress['value'] = 0
    mainWindow.update_idletasks()
    time.sleep(1)

    progress['value'] = 20
    mainWindow.update_idletasks()
    time.sleep(1)

    progress['value'] = 40
    mainWindow.update_idletasks()
    time.sleep(1)

    progress['value'] = 50
    mainWindow.update_idletasks()
    time.sleep(1)

    progress['value'] = 60
    mainWindow.update_idletasks()
    time.sleep(1)

    progress['value'] = 80
    mainWindow.update_idletasks()
    time.sleep(1)
    progress['value'] = 100


def testmode_login():
    #the function is too big so i won't write it, it could take from 3 secs, to 50 secs to finish.

def parallel_run():
    if __name__ == '__main__':
        Thread(target=bar2).start()
        Thread(target=testmode_login).start()


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