Python TKinter несколько операций - PullRequest
4 голосов
/ 17 декабря 2011

У меня есть две кнопки в форме, и когда я нажимаю на кнопку, она остается в нажатом состоянии, а рамка остается без ответа до завершения операции button1, в моем случае я вызываю новые окна xterm, которые остаются открытыми, и с button2 я хочу открыть новый xterm, но пока я не закрою окно xterm из команды button1, весь графический интерфейс не отвечает. Это почему? Спасибо, я начал использовать TKinter 2 дня назад, так что будьте спокойны:)

1 Ответ

4 голосов
/ 17 декабря 2011

Tkinter работает в одном потоке.Поэтому, когда вы нажимаете кнопку, команда обратного вызова, очевидно, не возвращается в течение длительного времени.Это заставляет графический интерфейс Tkinter зависать до тех пор, пока не будет возвращена команда обратного вызова.

Если возможно, решение состоит в том, чтобы разбить команду обратного вызова на более мелкие части, возможно, цикл, и часто вызывать update_idletasks () достаточно для обновления графического интерфейса Tkinter.

Если это невозможно, то команда обратного вызова должна порождать поток , поэтому ее выполнение не будет блокировать основной цикл событий Tkinter.

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