GTK + состояние виджета не обновлено? - PullRequest
0 голосов
/ 19 января 2010

В моем приложении я пытаюсь использовать файл GTK rc для стилизации виджетов:

style "boxstyle1"
{
    bg[ACTIVE] = { 0.0, 1.0, 0.0 }
    bg[NORMAL] = { 1.0, 0.0, 0.0 }
    bg[PRELIGHT] = { 0.0, 0.0, 1.0 }
}
widget "*.eventbox1" style "boxstyle1"

, в то время как нормальный цвет взят, но другие состояния - нет.кто-нибудь сталкивался с этой проблемой?


РЕДАКТИРОВАТЬ:
При отладке после инициализации виджета стиль виджета> возвращает все значения, сохраненные правильно.

Я регистрирую событие с измененным состоянием, которое никогда не срабатывает, когда 'состояние'изменилось.И в событиях ввода, выхода, нажатия, отпускания я проверил, что виджет-> состояние всегда равно 0. Продолжить проверку ...

То же самое, если я помещу, например, изображение в поле событий, изображение-> состояние никогдатакже обновлено ...

Я использую GTK 2.16, использую GtkBuilder для загрузки xml


, поэтому gtk_widget_modify_bg (виджет, GTK_STATE_ACTIVE, цвет) не изменится для состояний, кроме 0(NORMAL)

Ответы [ 2 ]

0 голосов
/ 25 мая 2016

Попробуйте заставить GTK обновить ожидающие операции следующим образом:

while gtk.events_pending():     #   this forces the refresh
    gtk.main_iteration()        #   of the screen
0 голосов
/ 20 января 2010

GtkEvent не имеет никакого состояния: это всего лишь контейнер без чего-либо нарисованного по умолчанию (следовательно, без чего-либо, что может быть активировано или с подсветкой ).

Если вы ожидаете настроить дочерние виджеты вашего окна событий, вы должны использовать правильный glob синтаксис в файле rc:

widget "*.eventbox1.*" style "boxstyle1"

Недавно добавленный .* соответствует всем дочерним элементам eventbox1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...