Я делаю приложение для чтения карт, а затем распечатываю его баланс, когда пользователь хочет видеть свой баланс, он нажимает кнопку «Баланс» на главном экране. Я создал фон, используя Каир. Теперь, когда пользователь нажимает Balance Enquiry
, экран, показывающий show your card
, должен быть приостановлен на 2-3 секунды, поэтому я использую функцию sleep(). Но проблема в том, что экран спит при нажатии на кнопку Bal. Enq.
, я уверен, что sleep()
после кода, который печатает show ur card
на экране.Как использовать sleep() в GTK +
2
A
ответ
6
Вы не можете использовать sleep()
в приложении GTK + GUI, оно заблокирует все приложение и сделает его невосприимчивым. Это ваше приложение заставляет GTK + выполнять работу по обновлению интерфейса; если вы спите, вы прекратите работу GTK +, и, таким образом, изменения пользовательского интерфейса не будут выполняться до тех пор, пока приложение не начнет резервное копирование.
Посмотрите API-интерфейс таймаута glib: g_timeout_add()
- это разумное место для начала.
+0
Спасибо за быстрый ответ. Я попробую это и приму свой ответ, как только он начнет работать. –
Функция 'sleep' помещает весь поток в спящий режим, что означает, что ни один код в потоке не работает вообще. Вы должны искать какой-то другой механизм тайм-аута. –
Спасибо за быстрый ответ !!! Существует функция 'g_timeout_add_seconds', но она допускает только определенный тип указателя функции внутри нее и не имеет регулярной функции. –
Функция, которую вы передаете 'g_timeout_add_seconds()' принимает указатель в качестве аргумента; если у вас есть более одной части данных, вы должны выделить структуру и передать ее как аргумент 'user_data'' g_timeout_add_seconds() '. – ebassi