2016-03-03 3 views
0

Я использую GUI, используя библиотеки GTK для своей программы. Короче говоря, я вычисляю переменную для каждого раза, когда у меня есть вход, а затем ввод показан в тексте с использованием gtk_text_buffer. Проблема в том, что всякий раз, когда я получаю вход (все в цикле while, но это почти 200 строк кода, поэтому я не буду публиковать его), я могу видеть как из командной строки, так и из графического интерфейса, что вход не обновить, если я не закрою окно, затем он снова откроется и покажет обновленный результат. После некоторых экспериментов я выяснил, что проблема заключается в gtk_main. Если я его назову, у меня есть эта проблема. Если я не работаю, программа отлично работает, но не отображает графический интерфейс. Если я использовать циклgtk_main update GUI

while (gtk_events_pending()) 
    { 
     gtk_main_iteration(); 
     gtk_main(); 
    } 

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

ответ

0

Вы не должны вызывать gtk_main(); в цикле, как оно работает, что цикл сам по себе:

while (not_exit) 
{ 
    gtk_main_iteration(); 
} 

Кроме этого не ясно, зачем вам такой конструкции вообще, gtk_main(); достаточно.

+0

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

Смежные вопросы