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