Dans certains programmes ubuntu (panneau de configuration ubuntu, paramètres système), mais pas par exemple dans banshee, la partie supérieure de la fenêtre contient des éléments dans des tons sombres (avec le thème Ambience). Mais je ne peux pas trouver un widget standard qui le fasse automatiquement.
Ces couleurs sont-elles toutes définies à la main (au lieu d'un widget + thème standard)? Et s'ils sont définis à la main, d'où viennent-ils dans le thème (quels sont les paramètres dans gtk_widget_modify_bg (widget, GTK_STATE_NORMAL, & color))?
EDIT: Il ne semble pas être un simple Gtk.Toolbar. Si j'exécute le code suivant:
from gi.repository import Gtk
window = Gtk.Window()
window.set_default_size(200, -1)
window.connect("destroy", lambda q: Gtk.main_quit())
toolbar = Gtk.Toolbar()
window.add(toolbar)
toolbutton = Gtk.ToolButton(stock_id=Gtk.STOCK_NEW)
toolbar.add(toolbutton)
window.show_all()
Gtk.main()
Je reçois une fenêtre comme celle-ci: qui n'a pas de ton sombre pour la barre d'outils.
EDIT2: Bien que la réponse «barre d'outils avec contexte spécial» de j-johan-edwards soit vraie dans la plupart des programmes, ce n'est pas le cas dans le panneau de contrôle ubuntuone. Ce programme a une GtkVBox qui peut inclure n'importe quelle gamme de widgets (contrairement à une barre d'outils). Je ne parviens toujours pas à déterminer comment le thème gtk sait comment peindre cette partie de la fenêtre.
Mais bon: pour l'instant une barre d'outils me suffit ...
la source
Gtk.get_major_version()
dit3
, mais je reçois toujours l'ancienne barre d'outils. C'est après unfrom gi.repository import Gtk
en python2 et python3.En ce qui concerne la deuxième partie de votre question, qui était "Comment ajouter VBox à la barre d'outils", tout ce que vous avez à faire est de l'envelopper dans un Gtk.ToolItem, par exemple :.
Vous pouvez le simplifier en créant une fonction d'assistance ou en étendant Gtk.Toolbar, par exemple:
custom_toolbar.py
Il vérifie simplement si l'objet que vous essayez d'insérer est un ToolItem, et sinon, il l'enveloppe à l'intérieur. Exemple d'utilisation:
main.py
Cela devrait ressembler à ceci
la source