在gtk3中,人们可以设置自己的主题。即使是默认的主题(Adwaita)也提供了两个变体:浅色和深色。在我编写自己的widget(用python编写)时,我需要获得这些颜色,以避免在黑底黑或白底白字上绘制。在
如何访问用户GTK主题的默认颜色?在
GtkSettings
用于提供可接受的gtk-theme-color
属性,但它已经不存在了,并且文档中没有引用来解释如何替换它。在因为原始的颜色在某处。原则上,我不明白为什么我应该被迫间接地访问它。在
此外,如果你仅仅因为胆敢删除某个地方的某个标签而使程序崩溃,你会有什么反应?如果改变一个标签的颜色实际上改变了其他完全无关的小部件的颜色,你会有什么反应?在
我不想要这种惊喜。在
在小部件的
do_draw()
实现中,可以从小部件的样式上下文中读取主题颜色。为此,可以使用诸如self.get_style_context().get_color()
、...get_border_color()
、...get_background_color()
等方法。在您不需要实例化GTK小部件来检索它们的
StyleContext
。在您可以创建一个空的Gtk.StyleContext并设置小部件类的Gtk.WidgetPath。在
前景色可以用.get_color()检索。 其他颜色和样式属性可以用.get_property()检索。在
两个方法都需要Gtk.StateFlags。在
有关属性,请参见GTK+ CSS Overview和GTK+ CSS Properties。在
相关问题 更多 >
编程相关推荐