Кнопка не получает стиля в PyGI

Я пытаюсь создать кнопку красного цвета вместо цвета по умолчанию. Я применяю стиль через CssProvider(), но цвет кнопки не меняется. Что я делаю не так ?

Вот код:

from gi.repository import Gtk, Gdk

CSS = """
GtkButton {
    background-color: red;
}
"""

class MyWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="Theme")
        self.resize(640, 480)
        self.connect("delete-event", Gtk.main_quit)

        cssprovider = Gtk.CssProvider()
        cssprovider.load_from_data(CSS)

        screen = Gdk.Screen.get_default()
        sc = Gtk.StyleContext()
        sc.add_provider_for_screen(screen, cssprovider,
                Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

        btn = Gtk.Button(label="Click")
        self.add(btn)

win = MyWindow()
win.show_all()
Gtk.main()

person Apoorv    schedule 27.06.2014    source источник
comment
Возможно, это ошибка. Изменение CSS на фон: красный исправляет это для меня. В других виджетах работает как background, так и background-color.   -  person Simon Feltman    schedule 28.06.2014


Ответы (1)


Проблема в том, что фоновое изображение имеет приоритет над фоновым цветом, первый, скорее всего, уже установлен в теме (градиент кнопки). Вы можете принудительно заменить фон полностью, используя свойство «background» или используя «background-color» вместе с деактивацией «background-image»:

GtkButton {
    background: red;
}

or:

GtkButton {
    background-image: none;
    background-color: red;
}

См.: https://bugzilla.gnome.org/show_bug.cgi?id=728027

person Simon Feltman    schedule 27.06.2014