Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从python Gtk3获取gtk主题css属性_Python_Gtk_Pygtk_Gtk3_Gnome - Fatal编程技术网

从python Gtk3获取gtk主题css属性

从python Gtk3获取gtk主题css属性,python,gtk,pygtk,gtk3,gnome,Python,Gtk,Pygtk,Gtk3,Gnome,我很难从系统Gtk3主题css(gtk.css)中获取某些属性,以便在python Gtk3应用程序中呈现上下文组件 我从我的系统主题gtk.css中得到了以下内容: entry { ... color: #5c616c; border-color: #cfd6e6; background-color: #ffffff; } entry:focus { background-clip: border-box; color: #5c616c; borde

我很难从系统Gtk3主题css(gtk.css)中获取某些属性,以便在python Gtk3应用程序中呈现上下文组件

我从我的系统主题gtk.css中得到了以下内容:

entry {
  ...
  color: #5c616c;
  border-color: #cfd6e6;
  background-color: #ffffff; }
  entry:focus {
    background-clip: border-box;
    color: #5c616c;
    border-color: #5294e2;
    background-color: #ffffff; }
  entry:disabled {
    color: rgba(92, 97, 108, 0.55);
    border-color: rgba(207, 214, 230, 0.55);
    background-color: rgba(255, 255, 255, 0.55); }
  entry.warning {
    color: white;
    border-color: #F27835;
    background-color: #f7ae86; }
    entry.warning image {
      color: white; }
...
我想从中得到的是那些上下文颜色,例如
条目中的
背景色
。警告
,等等

我做了一些研究,这里是我陷入困境的地方:

css_provider = Gtk.CssProvider.get_default()
warning_color = css_provider.get_style(something to put here)

非常感谢你的帮助

正确的方法是修改
Gtk.Widget
Gtk.StyleContext
使CSS规则适用于它,然后使用
Gtk.render_where()
函数来绘制上下文组件

例如,要在
Gtk.Entry
子类上渲染与
警告
背景样式相同的背景,请执行以下操作:

context = my_entry.get_style_context()
context.save()
context.add_class('warning')
Gtk.render_background(context, blah, blah, blah)
context.restore()

请注意,直接从CSS获取背景色是不可能的。CSS背景可以是颜色、图像或渐变。

非常感谢。我的后续问题是,我想在textview小部件中使用上下文颜色作为文本颜色(标记),并且我没有必要拥有实际的输入对象。正如我所说,您无法可靠地获得背景颜色,因为对于特定小部件可能没有“背景颜色”这样的东西。使用
context.get\u property()
可以获得一些样式。