[pygtk] changing the foreground colour of entry box dynamically

John Stowers john.stowers.lists at gmail.com
Mon Apr 13 09:00:59 WST 2009


On Thu, 2009-04-09 at 07:00 -0500, Laszlo Pandy wrote:
> The documentation shows that there are five states for a widget[1].
> 
> For each state, the GTK theme defines different colours for
> background, foreground etc.
> You can see some discussion about colours on John Stowers blog[2]. He
> has a good screenshot showing the different colours for each state[3],
> which makes it easier to find which colour you want to change.

Hi,

The code for the little tool to inspect theme colors is now available
from 

http://gist.github.com/49799

The blog post [2] has also been updated accordingly.

John

> 
> You can directly modify the bg, fg, text, and base colours using the
> widget.modify_* functions. For example:
> 
> mywidget.modify_bg(gtk.STATE_NORMAL, mycolor)
> # if you have a widget which changes appears when
> # selected you might have to change the other states as well.
> mywidget.modify_bg(gtk.STATE_SELECTED, mycolor)
> 
> Here is what I found about the theme guidelines for different colours[4]:
> # fg - Sets the foreground color of a widget.
> # bg - Sets the background color of a widget.
> # text - Sets the foreground color for widgets that have editable text.
> # base - Sets the background color for widgets that have editable text.
> 
> I only have experience changing the colours for my own custom widgets
> which do not to have states like prelight or selected. Let me know if
> this works.
> 
> Laszlo
> 
> [1] http://www.pygtk.org/docs/pygtk/gtk-constants.html#gtk-state-type-constants
> [2] http://www.johnstowers.co.nz/blog/index.php/2008/07/31/conduit-ui-experiments/
> [3] http://www.johnstowers.co.nz/blog/wp-content/uploads/2008/07/theme-swatch.png
> [4] http://orford.org/gtk/
> 
> On Thu, Apr 9, 2009 at 2:16 AM, Alessandro Dentella <sandro at e-den.it> wrote:
> > On Thu, Apr 09, 2009 at 10:36:18AM +1200, Tim Evans wrote:
> >> Tim Evans wrote:
> >> > ganesh gajare wrote:
> >> >> Hello,
> >> >>  I have created an entry box widget using glade.
> >> >>  and I am doing validation on that field...
> >> >>  So whenever an invalid text is entered in the entry box,the text color
> >> >> of entry should change dynamically..
> >> >
> >> > I haven't tested this, but the method 'modify_text' should do what you
> >> > need.  For example, to set the text to red, use:
> >> >
> >> >      entry.modify_text(gtk.gdk.color_parse('red'))
> >> >
> >> > and to set it back to the default black:
> >> >
> >> >      entry.modify_text(None)
> >> >
> >>
> >> Well, that's what I get for not even checking the documentation before
> >> posting.  I forgot the first argument to 'modify_text' should be a state
> >> value.  The relevant states here are:
> >>
> >>   - gtk.STATE_NORMAL for unselected text
> >>   - gtk.STATE_SELECTED for selected text when the entry is focused
> >>   - gtk.STATE_ACTIVE for selected text when a different widget is focused
> >
> >
> > In case you need to change the background too, i tryed to use modify_bg with
> > no luck while modify_base just works. I have not understood which is the
> > difference between one and the other, not I could find an explanation
> > of the difference between modify_bg and modify_text. The second works to
> > modify the text of an entry, the first does not.
> >
> > Any one  can explain or pint to documentaion on the difference between
> > base/bg and text/fg?
> >
> > In the kiwi package there is an interesting validation field that uses also
> > images as background. I wanted to do the same but didn't manage missing a
> > simpler example...
> >
> > sandro
> > _______________________________________________
> > pygtk mailing list   pygtk at daa.com.au
> > http://www.daa.com.au/mailman/listinfo/pygtk
> > Read the PyGTK FAQ: http://faq.pygtk.org/
> >
> _______________________________________________
> pygtk mailing list   pygtk at daa.com.au
> http://www.daa.com.au/mailman/listinfo/pygtk
> Read the PyGTK FAQ: http://faq.pygtk.org/



More information about the pygtk mailing list