【问题标题】:GTK3 reuse CSS state background colorsGTK3 重用 CSS 状态背景颜色
【发布时间】:2016-07-06 12:57:39
【问题描述】:

我正在移植一个 PyGTK2 应用程序。

这个应用程序做这样的事情:

        self.normal_color = editor.style.base [Gtk.STATE_NORMAL]
        self.insensitive_color = editor.style.base [Gtk.STATE_INSENSITIVE]

然后设置它:

        if editable: self.editor.modify_base (Gtk.STATE_NORMAL, self.normal_color)
        else:        self.editor.modify_base (Gtk.STATE_NORMAL, self.insensitive_color)

self.editor 是一个GtkTextView。它不只是将其设置为editor.set_sensitive(False) 的原因是因为编辑器中的用户程序和加载他的代码时编辑器必须仍然是可选择的,我们不希望文本变灰。

这是我使用 CSS 的端口的 MWE:

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

view = Gtk.TextView()
view.set_name('editable')
scroll = Gtk.ScrolledWindow()
scroll.add(view)

def button_clicked(button):
    edit = not view.get_editable()
    view.set_name('editable' if edit else 'readonly')
    button.set_label('Load' if edit else 'Edit')
    view.set_editable(edit)

button = Gtk.Button('Load')
button.connect('clicked', button_clicked)

box = Gtk.Box.new(Gtk.Orientation.VERTICAL, 0)
box.pack_start(scroll, True, True, 0)
box.pack_start(button, False, True, 0)

window = Gtk.Window()
window.set_default_size(300, 300)
window.add(box)
window.show_all()
window.connect('delete_event', Gtk.main_quit)

css = Gtk.CssProvider()
css.load_from_path('test.css')
style = Gtk.StyleContext()
style.add_provider_for_screen(Gdk.Screen.get_default(), css,
    Gtk.STYLE_PROVIDER_PRIORITY_USER)

Gtk.main()

以及相应的 CSS 文件:

#editable {
    background-color: white;
    /*background-color: @normal_bg_color;*/
}

#readonly {
    background-color: @insensitive_bg_color;
}

也就是说,我使用 CSS 名称来动态更改背景颜色。我还没有找到更简单的编程方式,因为一切似乎都已被弃用。

我的问题是,无论出于何种原因,@normal_bg_color 对于 GtkTextView 来说都不是白色的,这很奇怪。

我猜@*_bg_color 是通用颜色,并不特定于小部件。还是我错了?

我想要一些@GtkTextView:normal_bg_color...

view.get_style_context().get_background_color() 已被弃用。有没有可能获取用户的主题颜色?

【问题讨论】:

    标签: python css gtk3


    【解决方案1】:

    由于历史原因,您要查找的颜色可能是 @base_color。 GTK 一直区分“基本”颜色(用于文本输入小部件)和“背景”颜色(用于其他所有颜色)。

    这不是完整的文档,但可以在 this page 上找到示例。

    【讨论】:

      猜你喜欢
      • 2019-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-26
      • 2015-06-01
      相关资源
      最近更新 更多