GTK。小部件 - 无法改变bg颜色。 PyGTK的

时间:2015-09-07 10:50:12

标签: python colors gtk 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 个答案:

答案 0 :(得分:1)

EDIT2: 事实证明它是一个输入框,提供问题,这本身就是另一个问题,因为背景不是你需要修改的属性,而是BASE颜色属性,通常可以使用:

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))

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

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

原帖:

如果没有完整的代码,可能会有一些原因造成这种情况。我刚刚在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))

希望能够解决问题,为了得到更详细的信息,我们肯定需要更多的代码并知道你会遇到什么样的错误。

答案 1 :(得分:1)

好吧,我得到了解决方案。 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( “上色”)

“widgetname”有颜色。

CSS代码:

.colorize {

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

感谢您的帮助!我希望它对其他人有用)

关闭。