gtk: почему Gtk :: Main :: Iteration? - PullRequest
       7

gtk: почему Gtk :: Main :: Iteration?

1 голос
/ 18 октября 2010

Какой смысл делать Gtk::Main::iteration() в последних двух строках ответа на этот вопрос ? Я использую pygtk, поэтому эквивалентный вопрос будет, почему gtk.main_iteration_do()? Разве основной цикл, который работает, уже позаботился об этом?

Ответы [ 2 ]

3 голосов
/ 18 октября 2010

Когда я писал этот ответ, я предполагал, что элементы будут добавлены в длинный цикл - например, в обратный вызов где-то.Если вы явно не выполняете работу в отдельном потоке, основной цикл фактически не выполняется во время этого кода.Код там говорит окну прокручиваться до самого дна, но прокрутка фактически происходит только тогда, когда основной цикл восстанавливает управление.

«Пока ожидают события, выполняйте основное взаимодействие» на любом языке, который часто используется длязапускать основной цикл, пока все ожидающие обновления графического интерфейса не будут обработаны.

2 голосов
/ 18 октября 2010

Эти функции существуют для того, чтобы вы могли создать свой собственный цикл, и где-то в нем выполнялась итерация цикла GTK.

Вы можете позаботиться о других вещах во время выполнения цикла, в том же потоке / процессе, что и цикл. Многие библиотеки с основными циклами предоставляют либо способ планирования задач в их основном цикле, либо функцию для запуска одной итерации цикла, которую вы встраиваете где-то еще.

...