Gtk.CssProvider()基于ID的选择器在Gtk3中是如何工作的? [英] Gtk.CssProvider() how do ID based selectors work in Gtk3?

查看:48
本文介绍了Gtk.CssProvider()基于ID的选择器在Gtk3中是如何工作的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我断断续续地摆弄这个已经有几天了,但似乎就是不能理解可能存在的问题。

本质上,我试图使用CSS样式声明来设计Gtk3中的一些GTK小部件的样式,这并不复杂,只是尝试通过其id/名称来确定特定元素的目标。Gtk.CssProvider()的GTK文档说明

#widgetname { background-color: #333333; }

应该可以作为名称设置为"widgetname"的小部件的有效选择器,但是我似乎无法使其工作。我最初以为是CSS没有加载,但我可以针对顶级小部件,如下所示:

GtkWindow { background-color: #333; }

它会将样式应用到窗口,我可以看到背景颜色已更改。我尝试将该名称用作两个不同类型的小部件(GtkEventBox、GtkTextView、GtkStatusBar、GtkBox)的ID,但基于ID的选择器似乎不起作用。

以下是我如何加载CSS的简短片段:

css = Gtk.CssProvider()

# css.load_from_file(file)
css.load_from_data('''

GtkWindow {
    background-color: #333;
}

GtkEventBox {
    background-color: #333;
}

#statusbarwrap, #textview_event_wrap, #box1 {
     background-color: #333;
}

''')

style_context = self.get_style_context()
style_context.add_provider(
    css,
    Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

这里是GtkCssProviderhttps://developer.gnome.org/gtk3/3.7/GtkCssProvider.html

的文档

该页面上的示例24(只需向下滚动一两页)显示#ID选择器有效,我正在为Glade中的小部件设置名称。

如有任何帮助,我们将不胜感激。

推荐答案

我们可以使用‘gtk_WIDGET_SET_NAME()’为此小部件指定名称(ID)。

win = Gtk.Window()
win.set_name('main_window')

则"#Main_Window"可以用作CSS3中的ID选择符:

#main_window {
  background-color: ...
}

如果您使用文本编辑器打开glade文件,您可以发现,widget的名称实际上标记为id,如下所示:

<object class="GtkWindow" id="window1">

请注意,小工具的名称不应包含*、#或>等特殊字符,这些字符是CSS语法的一部分。

这篇关于Gtk.CssProvider()基于ID的选择器在Gtk3中是如何工作的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆