Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/07/2007, à 14:10

david breizh

[résolu]python glade et gtkimage

bonjour voilà je souhaite faire une appli pour moi ou d'autre (exercice quoi)
j'ai fait l'interface avec glade et un fichier python avec .
il y a une gtkimage et un bouton dans un verticalbox, voilà en gros.

ce que je voudrai c'est que l'image de la gtkimage change quand on clique sur le bouton en fait.
j'ai mis une icone transparente pour la gtkimage et une autre dans le même dossier.
j'ai connecter le bouton .
mais je ne vois pas comment faire en fait.

donc si quelqu'un pouvait me donner un petit coup de pouce il serait sympa.

je poste les sources: le fichier glade

<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">

<glade-interface>

<widget class="GtkWindow" id="window1">
  <property name="visible">True</property>
  <property name="title" translatable="yes">window1</property>
  <property name="type">GTK_WINDOW_TOPLEVEL</property>
  <property name="window_position">GTK_WIN_POS_NONE</property>
  <property name="modal">False</property>
  <property name="resizable">True</property>
  <property name="destroy_with_parent">False</property>
  <property name="decorated">True</property>
  <property name="skip_taskbar_hint">False</property>
  <property name="skip_pager_hint">False</property>
  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
  <property name="focus_on_map">True</property>
  <property name="urgency_hint">False</property>
  <signal name="destroy" handler="on_window1_destroy" last_modification_time="Tue, 17 Jul 2007 22:01:39 GMT"/>

  <child>
    <widget class="GtkVBox" id="vbox1">
      <property name="visible">True</property>
      <property name="homogeneous">False</property>
      <property name="spacing">0</property>

      <child>
	<widget class="GtkImage" id="image2">
	  <property name="visible">True</property>
	  <property name="pixbuf">neutre.png</property>
	  <property name="xalign">0.5</property>
	  <property name="yalign">0.5</property>
	  <property name="xpad">0</property>
	  <property name="ypad">0</property>
	</widget>
	<packing>
	  <property name="padding">0</property>
	  <property name="expand">True</property>
	  <property name="fill">True</property>
	</packing>
      </child>

      <child>
	<widget class="GtkTable" id="table1">
	  <property name="visible">True</property>
	  <property name="n_rows">3</property>
	  <property name="n_columns">3</property>
	  <property name="homogeneous">False</property>
	  <property name="row_spacing">0</property>
	  <property name="column_spacing">0</property>

	  <child>
	    <widget class="GtkButton" id="button1">
	      <property name="width_request">123</property>
	      <property name="height_request">61</property>
	      <property name="visible">True</property>
	      <property name="can_focus">True</property>
	      <property name="label" translatable="yes">button1</property>
	      <property name="use_underline">True</property>
	      <property name="relief">GTK_RELIEF_NORMAL</property>
	      <property name="focus_on_click">True</property>
	      <signal name="clicked" handler="on_button1_clicked" last_modification_time="Tue, 17 Jul 2007 22:01:26 GMT"/>
	    </widget>
	    <packing>
	      <property name="left_attach">1</property>
	      <property name="right_attach">2</property>
	      <property name="top_attach">1</property>
	      <property name="bottom_attach">2</property>
	      <property name="x_options">fill</property>
	      <property name="y_options"></property>
	    </packing>
	  </child>
	</widget>
	<packing>
	  <property name="padding">0</property>
	  <property name="expand">False</property>
	  <property name="fill">True</property>
	</packing>
      </child>
    </widget>
  </child>
</widget>

</glade-interface>

et le fichier python:

#!/usr/bin/env python
import sys
try:
        import pygtk
        pygtk.require("2.0")
except:
        pass
try:
        import gtk
        import gtk.glade
except:
        sys.exit(1)


class poup :
       
        def __init__(self):
               
                #Set the Glade file
                self.gladefile = "bb.glade" 
                self.wTree = gtk.glade.XML(self.gladefile)
               
                #Create our dictionay and connect it
                dic = { "on_boutton1_clicked" : self.btncrt_clicked,
                        "on_window1_destroy" : gtk.main_quit }
                self.wTree.signal_autoconnect(dic)

        def btncrt_clicked(self, Widget):
        	#là je vois pas trop quoi mettre en fait\
        	peut-être un GtkImage ou un truc dans le genre
                


if __name__ == "__main__":
        bbb = poup()
        gtk.main()

voilà merci

Dernière modification par david breizh (Le 21/07/2007, à 21:36)


ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!

Hors ligne

#2 Le 21/07/2007, à 19:04

Uda

Re : [résolu]python glade et gtkimage

Bonjour,

Normalement, tu peux récupérer un widget déclaré dans le fichier glade avec la méthode get_widget('Nom du widget"). Ensuite, il suffit d'appeler la méthode GtkImage.set_from_file ("nom du fichier") pour charger une nouvelle image.

Donc, quelques choses comme cela devrait faire l'affaire.

   def btncrt_clicked(self, Widget):
            self.wTree.get_widget('image2').set_from_file('monimage.png')

Par contre, il y a une petite erreur dans le dictionnaire de connection des signaux.
Il faut remplacer : "on_boutton1_clicked"  par "on_button1_clicked".

A+,
  Uda

Hors ligne

#3 Le 21/07/2007, à 21:36

david breizh

Re : [résolu]python glade et gtkimage

un grand merci à toi ça marche impec, et merci pour la correction pour la connection je l'avais pas vu.
je vais pouvoir refaire mon lecteur de radio sur internet et l'améliorer.


ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!

Hors ligne