【问题标题】:Gtk3/Gnome 3 colored button: apply ".needs-attention" css stylesGtk3/Gnome 3 彩色按钮:应用“.needs-attention”css 样式
【发布时间】:2017-12-14 00:24:40
【问题描述】:

前言

在 gnome 3 应用程序中,一些按钮通过有色背景而不是普通按钮的灰色来突出显示。这些按钮不仅在使用标准 Adwaita 主题时颜色不同,而且在各种其他主题中也实现了。下面分别是 Adwaita 和 Flat Plat 主题的普通按钮和彩色按钮示例。

Adwaita

平板

现在我的问题

我希望能够在我的 Gtk3 应用程序中实现这些“重要按钮”。在研究如何做到这一点时,我在主题文件中发现这些“重要按钮”有一个特殊的 CSS 类,称为needs-attention。然后我尝试将按钮的 CSS 类也设置为 needs-attention。然而这并没有奏效。我仍然得到一个灰色的标准按钮。为了演示我所做的,我附加了一个最小的脚本和正在运行的程序的屏幕截图。 “重命名”按钮应该像上面的屏幕截图一样突出显示。我该怎么做?

我的代码

#!/usr/bin/env python3

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class ButtonWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="Needs Attention Button")
        self.set_border_width(10)

        hbox = Gtk.Box(spacing=6)
        self.add(hbox)

        button = Gtk.Button.new_with_label("Remove")
        hbox.pack_start(button, True, True, 0)

        button = Gtk.Button.new_with_mnemonic("Rename")
        button.get_style_context().add_class("needs-attention")
        hbox.pack_start(button, True, True, 0)

win = ButtonWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()

【问题讨论】:

    标签: python button gtk3 gnome gnome-3


    【解决方案1】:

    GNOME 的 Adwaita 主题为建议的操作预定义了两个类:

    • suggested-action
    • destructive-action

    您可以在 GNOME Wiki HowDoI/Buttons 上阅读它:

    虽然大多数按钮都是灰色的,但它已经变得更加时尚 强调作为建议操作的按钮,给它们一个 不同的颜色。在 Adwaita 主题中,颜色为蓝色。 ... 最近,添加了另一个用于危险动作的样式类作为 好吧:“破坏性行动”。 Adwaita 主题使用红色作为按钮 标记为这样。

    在 Adwaita 上,它们分别如下所示:

    预定义的needs-attention 类,它是一个 Gtk.Stack/GtkStack 子属性,它在 Gtk.StackSwitcher 中呈现以引起用户注意,如 GtkStack API Reference 中所述:

    “需要注意”子属性

    “needs-attention”          gboolean
    

    设置一个标志,指定孩子是否需要用户注意。 GtkStackSwitcher 使用它来改变 当一个页面需要注意而不是 当前的。

    由此产生的视觉帮助可以在gtk3-widget-factory 程序中看到,作为需要注意的孩子上的一个蓝点(假设 Adwaita 主题):

    【讨论】:

      【解决方案2】:

      似乎我错了只是我使用了错误的 CSS 类。正确的是suggested-action 而不是needs-attention。如果我在原始代码中替换该字符串,我将得到以下正确结果:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-11
        • 1970-01-01
        • 2015-11-21
        • 2014-05-24
        • 1970-01-01
        • 1970-01-01
        • 2011-08-13
        • 2014-04-21
        相关资源
        最近更新 更多