В GTK на Windows, как я могу изменить цвет фона всего приложения? - PullRequest
1 голос
/ 07 августа 2009

Согласно http://www.pygtk.org/docs/pygtk/gtk-constants.html, существует пять типов состояний: STATE_NORMAL, STATE_INSENSITIVE и т. Д. Я хочу установить цвет фона таблицы, HBox, VBox и т. Д., И я попытался установить каждый возможный цвет каждого вида состояния:

    style = self.get_style()
    for a in (style.base, style.fg, style.bg,
              style.light, style.dark, style.mid,
              style.text, style.base, style.text_aa):
        for st in (gtk.STATE_NORMAL, gtk.STATE_INSENSITIVE,
                   gtk.STATE_PRELIGHT, gtk.STATE_SELECTED,
                   gtk.STATE_ACTIVE):
            a[st] = gtk.gdk.Color(0, 34251, 0)

Ничто не имеет никакого эффекта. Единственное, что оказывает какое-либо влияние, - это когда я вручную создаю EventBox и специально использую существующий цвет gtk.STATE_NORMAL для смешивания с другими цветами. Все, созданные gtk без моего вмешательства, не пострадали.

Какой правильный способ сделать это? Я не возражал бы против создания файла gtkrc или чего-то еще. Это потому, что hbox, vbox и т. Д. Не имеют цвета, но прозрачны? Кто тогда предоставляет общий цвет приложения?

Ответы [ 3 ]

2 голосов
/ 07 августа 2009

В основном google-fu (здесь нет окон), публикуется как «ответ», в основном для немного лучшего форматирования. Посмотрите, принесут ли плоды эксперименты с полноценным gtkrc, подобным приведенному здесь: здесь . Местоположение, основанное на , этом и , этом , кажется, меняется, поэтому если кто-то не имеет детерминистского подхода к его поиску, filemon может быть разумным подходом.

Будучи в основном пользователем таких приложений, я бы предпочел, чтобы настройки из моего gtkrc были жестко заданы тем, что программист считал «лучшим» в любое время.

1 голос
/ 07 августа 2009

Это потому, что VBox и Hbox не имеют связанных окон. нажмите здесь, чтобы увидеть другие виджеты без окон . Я бы создал коробки событий и добавил HBox или VBox внутри коробки событий.

0 голосов
/ 23 марта 2011

Вам нужно позвонить self.set_style(style) после смены стиля. Я использовал ваш код в качестве шаблона, и добавление этой строки делает фон всего зеленого.

...