2015-06-26 3 views
2

Я делаю приложение для чтения карт, а затем распечатываю его баланс, когда пользователь хочет видеть свой баланс, он нажимает кнопку «Баланс» на главном экране. Я создал фон, используя Каир. Теперь, когда пользователь нажимает Balance Enquiry, экран, показывающий show your card, должен быть приостановлен на 2-3 секунды, поэтому я использую функцию sleep(). Но проблема в том, что экран спит при нажатии на кнопку Bal. Enq., я уверен, что sleep() после кода, который печатает show ur card на экране.Как использовать sleep() в GTK +

+1

Функция 'sleep' помещает весь поток в спящий режим, что означает, что ни один код в потоке не работает вообще. Вы должны искать какой-то другой механизм тайм-аута. –

+0

Спасибо за быстрый ответ !!! Существует функция 'g_timeout_add_seconds', но она допускает только определенный тип указателя функции внутри нее и не имеет регулярной функции. –

+0

Функция, которую вы передаете 'g_timeout_add_seconds()' принимает указатель в качестве аргумента; если у вас есть более одной части данных, вы должны выделить структуру и передать ее как аргумент 'user_data'' g_timeout_add_seconds() '. – ebassi

ответ

6

Вы не можете использовать sleep() в приложении GTK + GUI, оно заблокирует все приложение и сделает его невосприимчивым. Это ваше приложение заставляет GTK + выполнять работу по обновлению интерфейса; если вы спите, вы прекратите работу GTK +, и, таким образом, изменения пользовательского интерфейса не будут выполняться до тех пор, пока приложение не начнет резервное копирование.

Посмотрите API-интерфейс таймаута glib: g_timeout_add() - это разумное место для начала.

+0

Спасибо за быстрый ответ. Я попробую это и приму свой ответ, как только он начнет работать. –