Как я могу перехватить основной цикл GTK или получить событие обратного вызова для главной функции, используя python gtk? - PullRequest
1 голос
/ 08 февраля 2012

У меня работает основная программа, которая отображает слайдер. Я понимаю концепцию их использования обратных вызовов, основанных на событиях. То, что я хочу сделать, это сказать, обновить изображение или обновить журнал автоматически без взаимодействия с пользователем, так что это будет в основном вызывать это событие все время. Я не уверен, есть ли обратный вызов для этого или нет, но любые предложения будут оценены.

Ответы [ 2 ]

4 голосов
/ 08 февраля 2012

Если я вас правильно понимаю, вы можете использовать gobject.timeout_add для этого.

3 голосов
/ 08 февраля 2012

Это похоже на опрос, что плохо, так как требует много ресурсов. На самом деле вы все равно должны использовать события, поскольку событие, которое должно вызвать обновление, должно запускаться при изменении вашего изображения.

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

Если вы хотите выполнить действие, скажем, каждые 5 секунд, то вместо этого использовали событие таймера, как предложил Джереми. Вы должны использовать g_timeout_add_seconds для кратности секунды (это позволяет избежать пробуждения ЦП без причины, что полезно для хорошего управления питанием), или g_timeout_add для детализация в миллисекундах.

...