2009-08-06 14 views
5

¿Cómo lo hago? Muchos sitios dicen que puedo simplemente llamar a .modify_bg() en el botón, pero eso no hace nada. Puedo agregar un EventBox al botón y agregar una etiqueta a eso, y luego cambiar sus colores, pero parece horrendo: hay una tonelada de espacio gris entre el borde del botón que no cambia. Sólo quiero algo que se parece a esto:GTK: crear un botón regular de color

img http://www.kksou.com/php-gtk2/gif/0023.gif

El sitio afirma haber hecho simplemente modify_bg() del botón. Pero eso no funciona para mí. . = (

La respuesta correcta probablemente implica la creación de un estilo, o algo con un archivo gtkrc, etc. Puede alguien me punto en esa dirección

+0

¿por qué los creadores de GTK hacen que sea tan difícil hacer algo tan simple: incluso tienen una función llamada modify_bg. No hace nada. He estado tratando de hacer esto por 2 horas. – Claudiu

Respuesta

16

He aquí un pequeño ejemplo:?

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() 
+0

ooh finalmente. funciona. Vi un ejemplo como este, pero el sitio web en el que lo vi dijo que .modify_bg fue inventado para evitar tener que hacer cosas como esta. ¡Gracias! – Claudiu

+0

desearía poder haberte votado más de una vez. – Claudiu

+0

+1 Probó el equivalente a C++ de este código y funcionó. –