¿Cómo hacer botones de diferentes colores en Python GTK3 (usando gi)?

Mi último rascador es crear una aplicación pequeña y divertida en Python3 con GTK3, con colores que no sean gris niebla en los botones. He pasado los últimos días buscando en Google cómo hacerlo, y hasta ahora todo lo que he intentado ha fallado. No solo fracasó, sino que fallósilenciosamente, sin mensajes de error para darme alguna pista de lo que está sucediendo.

Esta es mi aplicación de prueba:

from gi.repository import Gtk, Gdk

class ButtonWindow(Gtk.Window):

    def __init__(self):
        super().__init__(title="Button Test")
        self.set_border_width(10)
        hbox = Gtk.Box(spacing=10)
        self.add(hbox)
        hbox.set_homogeneous(False)

        # make the button
        button = Gtk.Button('Test Button')
        hbox.pack_start(button, True, True, 0)

        # try to change its colour ....

#        button.modify_base(Gtk.StateType.NORMAL, Gdk.color_parse('green'))
#        button.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(0, 1, 0, 1))
#        button.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(0x00ff00))
#        button.modify_bg(Gtk.StateType.NORMAL, Gdk.color_parse("green"))
#        button.modify_bg(Gtk.StateType.ACTIVE, Gdk.color_parse("green"))
#        button.modify_bg(Gtk.StateType.SELECTED, Gdk.color_parse("green"))

        # attempt to change the style ....

#        style = button.get_style().copy()
#        style.bg[Gtk.StateType.NORMAL] = Gdk.color_parse('green')
#        style.bg[Gtk.StateType.ACTIVE] = Gdk.color_parse('red')
#        style.bg[Gtk.StateType.SELECTED] = Gdk.color_parse('blue')
#        style.bg[Gtk.StateType.PRELIGHT] = Gdk.color_parse('black')
#        button.set_style(style)

        # ok, let's try changing the box ....

#        hbox.modify_base(Gtk.StateType.NORMAL, Gdk.color_parse('green'))
#        hbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(0,1,0,1))
#        hbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(0x00ff00ff))
#        hbox.modify_bg(Gtk.StateType.NORMAL, Gdk.color_parse('green'))

window = ButtonWindow()        
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()

He dejado mis intentos fallidos en como comentarios. Como se señaló anteriormente, en lo que respecta a la aplicación, parece que ha funcionado, ya que ninguna de las variaciones anteriores genera ningún mensaje de error. Sin embargo,ninguna De ellos parece que funcionan para mí, porque los botones siguen siendo del color del agua del plato.

Para mi información, estoy usando Python 3.2.3 en Ubuntu 12.04 con python3-gi y python3-gi-cairo instalados desde el repositorio estándar.

¿Puede alguien indicarme el camino correcto?

EDITAR: El siguiente es un ejemplo re-trabajado basado en la respuesta de @mike. Esto funciona, pero hay algunos problemas con él, posiblemente para ser abordado en algunas preguntas de seguimiento. Los temas son:

Por quebackground tiene que utilizar en Ubuntu en lugar debackground-color, y luego solo para el botón?Todavía tengo algunos problemas para que el estilo de fuente funcione, pero al menos ahora tengo un ejemplo funcional con el que jugar.¿Se pueden aplicar diferentes estilos / colores a diferentes botones, por ejemplo, ¿Sobre la base del texto o algún otro atributo?

Así, el código: -

from gi.repository import Gtk, Gdk

class ButtonWindow(Gtk.Window):

    def __init__(self):
        super().__init__(title="Button Test")
        self.set_border_width(10)

        hbox = Gtk.Box(spacing=10)
        self.add(hbox)
        hbox.set_homogeneous(False)

        # make the button
        button = Gtk.Button('Test Button')
        hbox.pack_start(button, True, True, 0)

# get the style from the css file and apply it
cssProvider = Gtk.CssProvider()
cssProvider.load_from_path('gtkStyledButtonTest.css')
screen = Gdk.Screen.get_default()
styleContext = Gtk.StyleContext()
styleContext.add_provider_for_screen(screen, cssProvider,
                                     Gtk.STYLE_PROVIDER_PRIORITY_USER)

window = ButtonWindow()        
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()

y el archivo css se parece a esto:

GtkWindow {
    background-color: #0000ff;
}

GtkButton {
    color: #ff0000;
    background: #00ff00;
}

Espero que alguien encuentre esto útil.

Respuestas a la pregunta(3)

Su respuesta a la pregunta