Цикл while не совместим с tkinter? - PullRequest
0 голосов
/ 29 июня 2018

По какой-то причине, когда я пытаюсь включить цикл while в мою tkinter программу, окно, которое я создал, зависает и говорит "не отвечает". Это потому что while не совместимо с tkinter? Если это так, пожалуйста, дайте мне знать, как обойти это.

1 Ответ

0 голосов
/ 29 июня 2018

«не совместимо» - не то слово. Программы Tkinter, безусловно, могут использовать циклы while. Фактически, mainloop сам по себе является циклом while.

Проблема не в совместимости, а в том, что tkinter является однопоточным и может выполнять только одно. Если python выполняет ваш цикл, он также не может одновременно обновлять экран и обрабатывать события, если вы явно не сделаете это.

Если это так, пожалуйста, дайте мне знать, как обойти это.

Эта часть вопроса слишком широка для stackoverflow. Есть много способов обойти это, но это зависит от того, что вы на самом деле пытаетесь сделать в цикле while. Например, вы можете запустить цикл в другом потоке. Вы можете запустить его в отдельном процессе. Вы можете разбить его на более мелкие фрагменты, которые запускаются между моментами, когда tkinter необходимо обновить экран, или вы можете явно попросить tkinter обновить экран в середине цикла.

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