为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

交互式爱情 2021-03-24 21:20:12
我已经反复研究了几天,但是似乎无法解决可能出现的问题。本质上,我正在尝试使用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)这是GtkCssProvider的文档https://developer.gnome.org/gtk3/3.7/GtkCssProvider.html该页面上的示例24(只需向下滚动一两个页面)就表明#ID选择器有效,并且我正在Glade中设置小部件的名称。任何帮助将不胜感激。
查看完整描述

1 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

我们可以使用“ gtk_widget_set_name()”为该小部件命名(ID)。


win = Gtk.Window()

win.set_name('main_window')

那么'#main_window'可以用作CSS3中的ID选择器:


#main_window {

  background-color: ...

}

如果使用文本编辑器打开林间空地文件,您会发现小部件的名称实际上被标记为id,如下所示:


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

请注意,小部件的名称不应包含*,#或>之类的特殊字符,它们是CSS语法的一部分。


查看完整回答
反对 回复 2021-03-26
  • 1 回答
  • 0 关注
  • 254 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信