Gtk.CssProvider()基于ID的选择器在Gtk3中是如何工作的?

Gtk.CssProvider() how do ID based selectors work in Gtk3?(Gtk.CssProvider()基于ID的选择器在Gtk3中是如何工作的?)
本文介绍了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中是如何工作的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

wkhtmltopdf print-media-type uses @media print ONLY and ignores the rest(Wkhtmltopdf print-media-type仅使用@media print,而忽略其余内容)
Minify CSS with Node-sass(使用Node-Sass缩小CSS)
How to rotate outer div not inner content(如何旋转外部div而不是内部内容)
how to apply css transform to child on parent hover(如何对父级悬停时的子级应用CSS变换)
Only transition a transform in css?(是否仅在css中转换转换?)
CSS transform doesn#39;t change CSS layout(Css转换不会更改css布局)