В некоторых программах Ubuntu (панель управления Ubuntu, настройки системы), но не в банши, например, верхняя часть окна содержит элементы темного тона (с темой Ambience). Но я не могу найти стандартный виджет, который делает это автоматически.
Все эти цвета установлены вручную (вместо стандартного виджета + темы)? И если они установлены вручную, откуда они берутся в теме (каковы параметры в gtk_widget_modify_bg (виджет, GTK_STATE_NORMAL, & color))?
РЕДАКТИРОВАТЬ: Это не похоже на простой Gtk.Toolbar. Если я запускаю следующий код:
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()
Я получаю окно, подобное этому: в нем нет темного тона для панели инструментов.
РЕДАКТИРОВАТЬ 2: Хотя ответ j-johan-edwards «панель инструментов со специальным контекстом» верен в большинстве программ, в ubuntuone-control-panel это не так. Эта программа имеет GtkVBox, который может включать в себя любой диапазон виджетов (в отличие от панели инструментов). Я до сих пор не могу определить, как gtk-theme знает, как рисовать эту часть окна.
Но в любом случае: пока мне достаточно панели инструментов ...
источник
Gtk.get_major_version()
говорит3
, но я все еще получаю старую панель инструментов. Это после afrom gi.repository import Gtk
в обоих python2 и python3.Что касается второй части вашего вопроса, которая была «Как добавить VBox на панель инструментов», все, что вам нужно сделать, это обернуть его внутри Gtk.ToolItem, например :.
Вы можете сделать это проще, создав вспомогательную функцию или расширив Gtk.Toolbar, например:
custom_toolbar.py
Он просто проверяет, является ли объект, который вы пытаетесь вставить, элементом ToolItem, а если нет, он оборачивает его в один. Пример использования:
main.py
Он должен выглядеть этот
источник