Gtk。小部件 - 无法更改背景色。 pygtk

Gtk. widget - can't change bg color. Pygtk

我用 python 代码编写 gtk 界面。问题是:

由 gtkbuilder 初始化入口小部件:

self.some_entry = self.builder.get_object('SomeEntry')

通过输入按钮定义信号,然后必须更改输入颜色:

def on_SomeButton_clicked(self, widget): self.some_entry.modify_bg(Gtk.StateType.NORMAL,Gdk.Color(20000,10000,10000))

但是不行,比如'modify_base'。我不知道为什么。请帮助。 对不起我的英语(

编辑2: 原来这是一个输入框,它本身就是另一个问题,因为背景不是您需要修改的 属性 而是通常可以使用以下方式设置的基本颜色 属性:

self.entry.override_background_color(Gtk.StateType.Normal, Gdk.RGBA(0.0, 1.0, 0.0, 1.0))

但是对于 OP 它不起作用,因此探索了 CSS 选项,列于:https://mail.gnome.org/archives/gtk-app-devel-list/2005-November/msg00236.html

编辑: 所以使用 PyGtk3 我能够使用你的代码行来获得一个改变颜色的按钮:

self.button.modify_bg(Gtk.StateType.Normal, Gdk.Color(20000, 10000, 10000))

初始化时为灰色,代码运行后为深红色。我唯一能想到的是确保您尝试修改的对象在您 运行 代码之后实际上处于正常状态,并确保您认为正在触发的信号实际上正在触发。

==============

原文post:

这里没有完整的代码,有一些原因可能会导致此问题。我刚刚在 Python 中拼凑了一个测试程序,基于:http://pygtk.org/pygtk2tutorial/examples/helloworld.py

当我为 modify_bg 设置 Gtk 状态时,我必须使用:

gtk.STATE_NORMAL

不确定这是由于不同版本的 Gtk 还是其他原因。 然后当我去使用 Gdk 时,我不得不将它称为:

gtk.gdk

我最后更改按钮颜色的行是:

self.button.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(20000, 10000, 10000))

希望一切顺利,为了获得更详细的信息,尽管我们肯定需要更多代码并了解您遇到的错误类型。

CSS 有效,代码如下:

style_provider = Gtk.CssProvider()
    css = open('style.css', 'rb')
    css_data = css.read()
    css.close()
    style_provider.load_from_data(css_data)
    Gtk.StyleContext.add_provider_for_screen(
        Gdk.Screen.get_default(),
        style_provider,
        Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

配线

"widgetname".get_style_context().add_class("colorize")

“widgetname”已被着色。

CSS代码:

.colorize {

           background: rgba(200,50,50,0.3);
}