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


- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- addEventListener 在 IE 11 中不起作用 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- 失败的 Canvas 360 jquery 插件 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01