У меня есть программа, которая использует методы конечных элементов для вычислений, которые могут занимать до пары минут. Поскольку программа, возможно, замерзла для пользователя, я сделал ее так, чтобы она вычисляла количество итераций, которые она сделает заблаговременно, и печатает прогресс в процентах для текстового виджета в TKinter.TKinter: текстовый виджет не обновляется во время запуска программы
Проблема заключается в том, что главное окно зависает во время итерации программы и только обновляет текст в конце, что не очень полезно для пользователя, чтобы узнать текущий ход вычислений.
Вот конкретная часть коды:
progr+=dcompl
textbox.configure(state=NORMAL)
textbox.delete(1.0,2.0)
textbox.insert(1.0,"Processando... ")
textbox.insert(2.0,str(int(progr))+"%") #the variable progr is the current progress in %
textbox.configure(state=DISABLED)
Он обновляет «PROGR» переменный каждый раз, когда он проходит через определенную часть кода.
Если я просто распечатаю переменную «progr» на консоли, она работает нормально, но я ожидаю, что пользователь будет смотреть на пользовательский интерфейс, а не на консоль.
Есть ли способ заставить окно TKinter не замораживать и обновлять текст во время работы программы?
Вы никогда не хотите называть 'sleep' в основном потоке графического интерфейса, потому что он заморозит весь графический интерфейс во время сна. –
Спасибо. Я использовал модуль потока для создания другого потока, и это устранило мою проблему. –