Tkinter (как и почти все известные мне графические структуры) требует, чтобы изменения состояния GUI происходили в определенном потоке. См. этот вопрос для дальнейшего обсуждения почему. Это не означает, что не может быть каких-либо других потоков в вашем приложении, просто вы не можете изменять состояние графического интерфейса пользователя из этих других потоков.
Если вы должны использовать другие потоки, чтобы длительные задачи не блокировали поток, используемый для графического интерфейса, вы можете иметь рабочие потоки, которые взаимодействуют с основным потоком через Queue
, как описано здесь .
Я не могу предупредить, что многопоточность умножит сложность вашего приложения в 10 раз (особенно если вы новичок в таких понятиях, как Queue
s). Однако, если вы не знакомы с Queue
s и их типичным использованием в параллельном программировании и по-прежнему хотите начать, хорошее начало - шаблон производитель / потребитель . Для еще более основательного взгляда на то, что означает понятие «очередь» в comp-sci, вы можете взглянуть на эту страницу , которая описывает очередь и предлагает вам реализовать ее собственную простую версию.