2010-06-12 5 views
2

Je souhaite créer un bouton permettant de contrôler l'aspect du bouton à l'aide de pyGTK. Comment ferais-je cela?Bouton pyGTK personnalisé

Je voudrais être en mesure de pointer vers une nouvelle image pour chaque « état » le bouton est en (c.-à-Pressé, souris sur, normal ... etc.)

Répondre

6

Comme décrit dans the API documentation for gtk.Image, « Si vous souhaitez recevoir des événements sur l'image, tels que des clics sur un bouton, placer l'image dans un gtk.EventBox, puis vous connecter aux signaux d'événement sur la boîte d'événement. ".

Vous souhaitez probablement utiliser un gtk.Image plutôt qu'un gtk.Button, car les boutons nécessitent une meilleure connaissance du fonctionnement du moteur de thèmes. Si vous voulez vraiment utiliser un bouton, vous aurez besoin de lire sur gtk rc files et les API pour les manipuler.

+2

Bonne réponse de Glyph, une image dans un EventBox est probablement la bonne façon. Cependant, dans les termes généraux de l'interface utilisateur, modifier la façon dont un utilisateur a défini les boutons (en utilisant des changements de style) est intrinsèquement mauvais. –

+0

Je suis définitivement d'accord avec ça. – Glyph

1

Voici un moyen facile d'utiliser une image sur un bouton. Notez qu'il n'y a aucun texte donné lorsque vous initialisez le bouton (self.button1 = gtk.Button()). L'ajout de texte afficherait le texte à la place de l'image.

self.image1 = gtk.Image() 
    self.image1.set_from_file('images/home.png') 
    self.image1.show() 
    self.button1 = gtk.Button() 
    self.button1.add(self.image1) 
    self.button1.show() 
    self.backupHBox.pack_start(self.button1, True, True) 
    self.button1.connect("clicked", self.quit)