Как избавиться от градиента фона встроенного GtkToolbar?

Когда Вы будете работать ниже кода, он покажет встроенную панель инструментов на окне. Заметьте, как встроенная панель инструментов имеет безусловного победителя backbround. Существует ли способ применить CSS, чтобы избавиться от него и сделать смешение с регулярным цветом окна?

#!/usr/bin/python3
from gi.repository import Gtk

button_names = [Gtk.STOCK_ABOUT, Gtk.STOCK_ADD, Gtk.STOCK_REMOVE, Gtk.STOCK_QUIT]
buttons = [Gtk.ToolButton.new_from_stock(name) for name in button_names]
toolbar = Gtk.Toolbar()
toolbar.set_show_arrow(False)
for button in buttons:
    toolbar.insert(button, -1)
style_context = toolbar.get_style_context()
style_context.add_class(Gtk.STYLE_CLASS_INLINE_TOOLBAR)
grid = Gtk.Grid()
grid.add(toolbar)
label = Gtk.Label()
grid.add(label)
window = Gtk.Window()
window.set_size_request(200, 50)
window.add(grid)
window.connect('delete-event', Gtk.main_quit)
window.show_all()
Gtk.main()

Используя код andrewsomething, это начинает выглядеть лучше, но "граница" все еще там и занимает место. Заметьте в ниже снимка экрана, панель инструментов слева меньше, чем обычные кнопки справа: ubiquity testing

6
задан 13 September 2012 в 13:21

2 ответа

Здесь мы идем:

example screenshot

Сначала необходимо найти цвет фона по умолчанию для текущая тема. Затем можно ввести его в текущую CSS для класса GtkToolbar.

# Get the default window background color for the the current theme.
win_style_context = window.get_style_context()
bg = win_style_context.lookup_color('theme_bg_color')[1].to_string()

# Then we set that as the background for GtkToolbar
# We also make the boarder transparent
css_provider = Gtk.CssProvider()
toolbar_css = ".inline-toolbar.toolbar { background: %s; border-color: transparent; }" % (bg)
css_provider.load_from_data(toolbar_css.encode('UTF-8'))
screen = Gdk.Screen.get_default()
win_style_context.add_provider_for_screen(screen, css_provider,
                                          Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

Обратите внимание, что Вы должны from gi.repository import Gdk

11
ответ дан 21 October 2019 в 10:46

Можно также использовать:

css_provider = Gtk.CssProvider()
toolbar_css = ".inline-toolbar { background: alpha (@base_color, 0.0); border-color: transparent; }"
css_provider.load_from_data(toolbar_css.encode('UTF-8'))
win_style_context.add_provider(css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
0
ответ дан 21 October 2019 в 10:46

Другие вопросы по тегам:

Похожие вопросы: