Я пытаюсь запустить строку состояния выполнения, чтобы сообщить пользователю, что задача выполняется. Я безуспешно пробовал разные стратегии.
В этом коде проблема в том, что я не могу обновить из дочернего потока значение индикатора выполнения. Я что-то делаю не так.
import time
import threading
from tkinter import Tk, Button
from tkinter.ttk import Progressbar
class App():
def __init__(self, root):
self.button = Button(root)
self.button.grid(row=1,column=0, padx=2,pady=2);
self._resetbutton()
self.progress = Progressbar(root, length=330, mode = 'determinate')
self.progress.grid( row=2,column=0, columnspan=4,padx=2,pady=2);
def _resetbutton(self):
self.running = False
self.button.config(text="Start", command=self.startthread)
def startthread(self):
self.running = True
newthread = threading.Thread(target=self.status_bar)
newthread.start()
self.button.config(text="Stop", command=self._resetbutton)
for x in range(12):
time.sleep(.75)
print(".");
def status_bar( self ):
value = 0;
print("started thread");
while self.running:
value = ( value + 10 ) % 100;
#self.progress['value'] = value; # <-- failure
time.sleep(0.5);
print( value );
print("done thread");
ventana_principal=Tk()
calculadora=App(ventana_principal)
ventana_principal.mainloop()