2015-09-07 43 views
0

我用python代码编写gtk接口。问题是:Gtk。小部件 - 不能改变bg颜色。 Pygtk

初始化录入组件由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'。我不知道为什么。请帮助。 对不起,我的英语(

+0

与GtkTextView它的作品,但它gtkwidget太 –

+0

它似乎是这样的:http://stackoverflow.com/questions/15245886/how-do-i-change-a-gtk3-entry-text-color- in-python3但代替背景,而override_background_color(Gtk.StateFlags.NORMAL,Gdk.RGBA(0.0,1.0,0.0,1.0))没有帮助 –

回答

0

EDIT2: 原来这是一个输入框让这本身并另一个问题的问题,因为背景是不是你需要修改属性,但基本颜色属性,它通常可以利用设置:

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

当我设置GTK的国家为modify_bg我不得不使用:

gtk.STATE_NORMAL 

不知道这是由于不同版本的Gtk或什么。 后来,当我去使用GDK,我不得不把它称为:

gtk.gdk 

,我结束了与更改按钮颜色的线是:

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

希望可以算出,在为了得到更详细的内容,虽然我们肯定需要更多的代码,并且知道你得到的是哪种错误。

+0

谢谢,但它有用的另一个版本。 –

+0

我使用gtk3&python3。我一直在寻找文档很长一段时间,因为gtk.STATE_NORMAL - 旧类型,它不适合我。 –

+0

是的,在我的工作计划中没有警告。 –

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(“colorize”)

“widgetname”hase colorized。

CSS代码:

.colorize { 

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

感谢您的帮助!我希望这会对别人有用)

已关闭。