Search code examples
pythonbuttongtkcolorspygtk

GTK: create a colored regular button


How do I do it? A lot of sites say I can just call .modify_bg() on the button, but that doesn't do anything. I'm able to add an EventBox to the button, and add a label to that, and then change its colors, but it looks horrendous - there is a ton of gray space between the edge of the button that doesn't change. I just want something that looks like this:

img
(source: kksou.com)

The site claims to have just done modify_bg() on the button. But that doesn't work for me. =(.

The right answer probably involves creating a style, or something with a gtkrc file, etc. Can someone point me in that direction?


Solution

  • Here's a little example:

    import gtk
    
    win = gtk.Window()
    win.connect("destroy", gtk.main_quit)
    
    btn = gtk.Button("test")
    
    #make a gdk.color for red
    map = btn.get_colormap() 
    color = map.alloc_color("red")
    
    #copy the current style and replace the background
    style = btn.get_style().copy()
    style.bg[gtk.STATE_NORMAL] = color
    
    #set the button's style to the one you created
    btn.set_style(style)
    
    win.add(btn)
    win.show_all()
    
    gtk.main()