2016-03-03 58 views
0

我正在將使用GTK庫的GUI應用到我的程序中。簡而言之,每次我有一個輸入時,我都會計算一個變量,然後使用gtk_text_buffer將輸入顯示爲文本。問題是,無論何時我收到輸入(一切都在while循環中,但它幾乎是200行代碼,所以我不會發布它),我可以從命令行和GUI都看到,輸入沒有更新,除非我關閉窗口,然後它會再次打開並顯示更新的結果。經過一些實驗後,我發現問題是gtk_main。如果我打電話給我,我有這個問題。如果我不這個程序工作正常,但不會顯示GUI。如果我使用一個循環gtk_main更新GUI

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

輸入更新所有的時間,但每次更新打開一個新的窗口(出正確的結果,但它的每個輸入端開路無窮大)。有沒有人得到一個解決方案,如何保持更新GUI而不必每次關閉窗口?

回答

0

你不應該叫gtk_main();在一個循環,因爲它本身就是運行一個循環:

while (not_exit) 
{ 
    gtk_main_iteration(); 
} 

除此之外,目前尚不清楚爲什麼你需要這樣的結構可言,gtk_main();就足夠了。

+0

gtk_main,根據文檔應該足夠了。但它不會循環,除非我關閉窗口。基本上,只有當我關閉窗口時它纔會再次啓動循環(然後它會自動再次自動啓動) – user3353167