Кнопки со стилем Mac (сегментированное управление) с Gtk - PullRequest
0 голосов
/ 26 ноября 2011

Я видел это в программном центре Ubuntu и с несколькими приложениями для гномов.

Где две кнопки выглядят как один прямоугольник с линией через него, как это делается?

Ответы [ 2 ]

1 голос
/ 26 ноября 2011

В GTK 3.0 и более поздних версиях используйте класс стиля INLINE_TOOLBAR или класс стиля LINKED.

#!/usr/bin/env python

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()
for button in buttons:
    toolbar.insert(button, -1)
style_context = toolbar.get_style_context()
style_context.add_class(Gtk.STYLE_CLASS_INLINE_TOOLBAR)

window = Gtk.Window()
window.set_size_request(200, 50)
window.add(toolbar)
window.connect('delete-event', Gtk.main_quit)
window.show_all()

Gtk.main()
0 голосов
/ 15 июня 2016

Fwiw, так как у меня недавно был тот же самый вопрос, вот другой ответ с современной цитатой и использованием C вместо некоторой обертки.(Я использую GTKmm, но я чувствую, что мы должны ссылаться на нативный C API, если явно не указана оболочка.)

Я хотел добиться того же и в конце концов наткнулся на ответ на официальной странице HowDoI: кнопки .Этот эффект достигается путем помещения целевых Button с в Container и предоставления последнему классу CSS связанный . (на этой странице написано, что использование Box является нормальным,но, поскольку Box, вероятно, скоро будет признан устаревшим, а Grid в любом случае лучше ... используйте Grid.)

Итак:

GtkWidget *const grid = gtk_grid_new ();
GtkStyleContext *const context = gtk_widget_get_style_context (grid);
gtk_style_context_add_class (context, "linked");
/* Add your Buttons to the Grid */

Эта ссылка также обсуждает некоторые другиеудобные украшения, которые мы можем сделать до GtkButton с, включая классы предлагаемое действие и деструктивное действие .

Для похожих вопросов очень показательно просмотретьисточник (A) приложения, которое делает то, что вы хотите воспроизвести, и (B) тема Adwaita CSS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...