В общем, я хотел бы, чтобы 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()