2009-08-06 12 views
5

Comment faire? Beaucoup de sites disent que je peux juste appeler .modify_bg() sur le bouton, mais cela ne fait rien. Je suis en mesure d'ajouter un EventBox au bouton, et ajouter une étiquette à cela, puis changer ses couleurs, mais il semble horrible - il y a une tonne d'espace gris entre le bord du bouton qui ne change pas. Je veux juste quelque chose qui ressemble à ceci:GTK: créer un bouton régulier coloré

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

Le site prétend avoir simplement fait modify_bg() sur le bouton. Mais ça ne marche pas pour moi. . = (

La bonne réponse consiste probablement créer un style, ou quelque chose avec un fichier gtkrc, etc. Quelqu'un peut-il me diriger dans cette direction

+0

pourquoi serait Les créateurs de GTK ont tellement de mal à faire une chose aussi simple: ils ont même une fonction appelée modify_bg, ça ne fait rien, ça fait 2 heures que j'essaye de faire ça maintenant, – Claudiu

Répondre

16

Voici un petit exemple:

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 finalement. J'ai vu un exemple comme celui-ci, mais le site web que j'ai vu a dit que .modify_bg a été inventé pour éviter d'avoir à faire des trucs comme ça .. merci !! – Claudiu

+0

J'aimerais pouvoir t'avoir plus d'une fois. – Claudiu

+0

+1 Testé l'équivalent C++ de ce code et cela a fonctionné. –

Questions connexes