Python: Проблема с подвисанием GUI на TkInter

Встала задача написания небольшой графической оболочки для программы с минимальным интерфейсом (одна кнопка и одно поле вывода). Много нам не надо, поэтому решил обойтись идущей вместе с python’ом в поставке библиотекой TkInter. И тут столкнулся с небольшой проблемой – при нажатии кнопки запускаются довольно долгие и объёмные вычисления, из-за которых виснет весь интерфейс программы.

Решений у этого вопроса несколько.

1. Запускать эти вычисления в отдельном потоке, что меня вполне устроило:

2. Использовать время от времени методы:

  • Tk.update();
  • Tk.update_idletasks() – только обновляет окна, но не вызывает обработку событий, сгенерированных пользователем, в отличие от Tk.update();

Использовать эти методы стоит с осторожностью, дабы не возникло неприятных ситуаций (подробнее в документации). Таково предостережение официальной документации.

Понравилась статья? Поделиться с друзьями:
Комментариев: 2
  1. Аноним

    Почему если создавать окно ткинтера не через класс, появляется 2-е окно и вся программа подвисает?Потоки не работают(

    1. lizz

      Вероятно, вы что-то делаете не так, по сути никакой разницы нет: через класс что-то делать или нет. Ну или как вариант, за 4 года пример устарел и теперь в Tkinter это делается как-то иначе (впрочем, в этом я сомневаюсь).

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: