Mac风格加入按钮(分段控制)与Gtk

时间:2011-11-26 08:09:20

标签: gtk

我已经在ubuntu软件中心看到了它,并且使用了一些gnome应用程序。

如果两个按钮看起来像一个带有直线的矩形,那么这是怎么做的?

2 个答案:

答案 0 :(得分:1)

在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()

答案 1 :(得分:0)

Fwiw,因为我最近有同样的问题,这是另一个答案,其中包含最新的引用并使用C而不是一些包装。 (我使用GTKmm,但我觉得除非明确说明了包装,否则我们应该引用本机C API。)

我想在官方页面HowDoI: Buttons找到同样的事情并最终偶然发现答案。通过将目标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的源代码非常具有说明性。