задержка в настройке «после» функции в python tkinter - PullRequest
1 голос
/ 08 февраля 2020

Я пишу короткое приложение в python, используя tkinter. Все работает, за исключением неожиданной паузы - это должно генерировать событие два раза в секунду, но часто это делает паузу на 5 или 6 секунд между сигналами. Я поместил операторы print, чтобы найти задержку, и обнаружил, что это следующее утверждение:

self.frame.after (ms, self.tick_handler)

мс равен 500, поэтому это должно послать событие примерно за 0,5 секунды. Обычно это происходит, но часто он висит на 5 или 6 секунд, прежде чем tick_handler () получает сигнал. Программа довольно проста: один рабочий поток получает все входные данные из одной очереди, а события поступают из одного кадра tkinter. Оператор after() находится в рабочем потоке. Я пытался отключить g c (gc.disable()), но это не имеет значения. На моем компьютере эта активность минимальна.

Если я посылаю другой ввод во время паузы с помощью мыши или клавиш, он обрабатывается немедленно, поэтому рабочий поток не блокируется. Похоже, что сигнал запроса получен, но не запущен в течение некоторого времени. Я знаю, что не могу ожидать производительности в реальном времени, поэтому 0,6 секунды не заслуживают внимания, но 6,0 секунды?

Впервые я работал с tkinter. Что-то мне не хватает в обработке событий?

1 Ответ

0 голосов
/ 08 февраля 2020

Я думаю, вы не включили tkinter.mainloop() В конце

PS: Я не уверен ...

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