6 votes

Comment se débarrasser du dégradé de fond de la GtkToolbar en ligne ?

Lorsque vous exécutez le code ci-dessous, il affichera une barre d'outils en ligne dans une fenêtre. Vous remarquerez que la barre d'outils en ligne a un arrière-plan bien visible. Existe-t-il un moyen d'appliquer une CSS pour s'en débarrasser et l'intégrer à la couleur normale de la fenêtre ?

#!/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()

En utilisant le code andrewsomething, cela commence à être mieux mais la "bordure" est toujours là et prend de la place. Remarquez dans la capture d'écran ci-dessous que la barre d'outils sur la gauche est plus petite que les boutons normaux sur la droite : ubiquity testing

11voto

Ghirai Points 11

C'est parti :

example screenshot

Vous devez d'abord trouver la couleur de fond par défaut du thème actuel. Ensuite, vous pouvez l'injecter dans la css actuelle de la classe 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)

Notez que vous devez from gi.repository import Gdk

0voto

aleb Points 126

Vous pouvez également utiliser :

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)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X