2015-06-26 97 views
2

我正在製作應用程序來讀取卡片,然後打印其餘額,當用戶想要查看他的餘額時,他點擊主屏幕上的餘額查詢按鈕。我使用開羅創建了背景。現在當用戶點擊Balance Enquiry屏幕顯示show your card應該暫停2-3秒,所以我使用sleep()函數。但問題是屏幕上點擊Bal. Enq.按鈕,我相信sleep()是在屏幕上打印show ur card的代碼之後。如何使用睡眠()GTK +

+1

「睡眠」函數使整個線程進入睡眠狀態,意味着線程中根本沒有代碼運行。你應該尋找其他的超時機制。 –

+0

感謝您的快速回復!有一個'g_timeout_add_seconds'函數,但它只允許特定類型的函數指針,並且沒有常規函數。 –

+0

傳遞給'g_timeout_add_seconds()'的函數將一個指針作爲參數;如果您有多條數據,則應該分配一個結構並將其作爲'g_timeout_add_seconds()'的'user_data'參數傳遞。 – ebassi

回答

6

您不能在GTK + GUI應用程序中使用sleep(),它會阻止整個應用程序並使其無響應。您的應用程序會導致GTK +執行更新界面的工作;如果你睡着了,你會停止運行GTK +,因此在應用程序被喚醒之前UI變化不會發生。

調查glib的超時API:g_timeout_add()是一個明智的開始。

+0

謝謝您的快速回答我會嘗試這一點,並儘快接受您的答案開始工作。 –