Pages : 1
#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