Как настроить виджет Tkinter из отдельного класса? - PullRequest
2 голосов
/ 09 июня 2011

Я пишу программу Tkinter, которая требует цикл.Я не могу запустить цикл из того же класса, в котором находится Tkinter, я довольно уверен в этом.Чтобы запустить указанный цикл, я считаю, что мне нужно использовать отдельный поток, следовательно, отдельный класс, чтобы Tkinter не зависал.Я заставил Tkinter работать, пока цикл в потоке печатает числа.Однако мне нужно настроить окно Tkinter, которое находится в другом классе.Как бы я пошел по этому поводу?

1 Ответ

0 голосов
/ 09 июня 2011

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

Однако, чтобы ответить на ваш конкретный вопрос, вы должны создать очередь. Рабочий поток помещает какие-то сообщения в очередь, а основной поток опрашивает очередь через цикл обработки событий и отвечает на сообщение. Это необходимо, потому что рабочий поток не может напрямую изменять виджеты tk.

Пример использования потоков и очередей с Tkinter см. В Tkinter и Threads на effbot.orb. Обратите особое внимание на то, как он использует after для опроса очереди каждые 100 мс.

...