#python #gtk3 #pygobject
#python #gtk3 #pygobject
Вопрос:
Я пытаюсь создать кнопку красного цвета вместо цвета по умолчанию. Я применяю стиль через a 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()
Комментарии:
1. Возможно, это ошибка. Изменение CSS на «background: red» исправляет это для меня. На других виджетах, похоже, работают как background, так и background-color.
Ответ №1:
Проблема в том, что фоновое изображение имеет приоритет над цветом фона, первое, скорее всего, уже задано в теме (градиент кнопки). Вы можете принудительно выполнить полную замену фона, используя свойство «background» или используя «background-color» вместе с отключением настройки «background-image»:
GtkButton {
background: red;
}
или:
GtkButton {
background-image: none;
background-color: red;
}