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 09/02/2011, à 18:09

msg_dracula

[Résolu] Glade3, problème de compréhension avec boite de dialogue

Bonjour,

Je commence à apprendre la création d'interface graphique avec Glade3 et python

Souhaitant faire une boite de dialogue "A propos", il y a une chose que je n'arrive pas a comprendre. J'ai un dialog-action_area1 avec un bouton fermer. Je peux rajouter des boutons et leur attribuer une gestion des signaux, mais je n'arrive pas a le faire avec le bouton "Fermer".

Donc la question est, Comment attribuer une action a ce bouton "Fermer" pour bien sur fermer la fenêtre en question ?

Merci

Dernière modification par msg_dracula (Le 10/02/2011, à 01:24)

Hors ligne

#2 Le 09/02/2011, à 19:26

feuloren

Re : [Résolu] Glade3, problème de compréhension avec boite de dialogue

Tu dois connecter le signal "response" émit par GtkDialog et tester si l'id donnée avec le signal est celle de ton bouton.
Je ne suis pas sur de la valeur retournée par le bouton fermer de ce dialogue mais tu peux toujours essayé gtk.RESPONSE_CLOSE

Hors ligne

#3 Le 10/02/2011, à 01:23

msg_dracula

Re : [Résolu] Glade3, problème de compréhension avec boite de dialogue

Merci, après quelques recherches, j'y suis arrivé.

self.about = self.wTree.get_widget("apropos")
         self.about.show()
         reponse = self.about.run()
         if reponse == gtk.RESPONSE_DELETE_EVENT or reponse == gtk.RESPONSE_CANCEL:
             self.about.destroy()

ET voila, ça marche.

Merci

Hors ligne

#4 Le 11/02/2011, à 16:42

cenwen

Re : [Résolu] Glade3, problème de compréhension avec boite de dialogue

Bonjour,
Désolé de m'imisser dans ce post mais, par rapport à ton dernier commentaire, je vois que tu utilises encore libglade et non Gtkbuilder. Quand Gnome 3 (cad bientot) sortiera ton application ne fonctionnera plus. Ne serait-il pas judicieux de prendre pour habitude (surtout quand on commence tongue ) d'utiliser la bonne librairie. Je dis ça car j'ai été confronté à la même chose il y a quelques temps. big_smile

self.about = self.interface.get_object("apropos")

Le reste étant identique.
Je tiens à preciser que moi aussi je ne suis qu'un débutant.

Dernière modification par cenwen (Le 11/02/2011, à 17:50)


Le jour où j'ai découvert le libre, j'ai su que je ne reviendrais jamais en arrière.
The OpenShot Team : http://www.openshotvideo.com/
Mon blog perso sur le multimédia et OpenShot : http://linuxevolution.wordpress.com/
Google+ : https://plus.google.com/u/0/111472725110173916234/posts

Hors ligne

#5 Le 11/02/2011, à 19:19

msg_dracula

Re : [Résolu] Glade3, problème de compréhension avec boite de dialogue

interessant ça !! merci du conseil.

Bon ben j'ai plus qu'a faire le test avec gtkbuilder

Merci encore

Hors ligne

#6 Le 11/02/2011, à 19:22

cenwen

Re : [Résolu] Glade3, problème de compréhension avec boite de dialogue

Oui mais ce n'est pas tout ce qu'il y a à faire. Tu dois revoir toute la partie des widgets. Par contre, comme tu commences ton appli ( c'est bien ça ? ), tu prendras de bonnes habitudes sans te mélanger trop les pinceaux;

Dernière modification par cenwen (Le 11/02/2011, à 19:28)


Le jour où j'ai découvert le libre, j'ai su que je ne reviendrais jamais en arrière.
The OpenShot Team : http://www.openshotvideo.com/
Mon blog perso sur le multimédia et OpenShot : http://linuxevolution.wordpress.com/
Google+ : https://plus.google.com/u/0/111472725110173916234/posts

Hors ligne

#7 Le 11/02/2011, à 19:35

cenwen

Re : [Résolu] Glade3, problème de compréhension avec boite de dialogue

Tiens voici un exemple :

#!/usr/bin/env python
#-*- coding: utf8 -*-

import pygtk
pygtk.require("2.0")
import gtk

class HelloWorld:
    
        def __init__(self):
        
                interface = gtk.Builder()
                interface.add_from_file("Hello-World-Zero.glade")
        
                self.myLabel = interface.get_object("myLabel")
                interface.connect_signals(self)
        
        def on_mainWindow_destroy(self, widget):
                gtk.main_quit()
            
        def on_myButton_clicked(self, widget):
                self.myLabel.set_text("ZeroTutoriel")
            
if __name__ == "__main__":
        HelloWorld()
        gtk.main()

Et voici le fichier Glade correspondant :

<?xml version="1.0"?>
<interface>
  <requires lib="gtk+" version="2.16"/>
  <!-- interface-naming-policy project-wide -->
  <object class="GtkWindow" id="mainWindow">
    <property name="visible">True</property>
    <property name="title" translatable="yes">Hello word !</property>
    <property name="window_position">center</property>
    <signal name="destroy" handler="on_mainWindow_destroy"/>
    <child>
      <object class="GtkVBox" id="vbox1">
        <property name="visible">True</property>
        <child>
          <object class="GtkLabel" id="myLabel">
            <property name="visible">True</property>
            <property name="label" translatable="yes">Hello</property>
          </object>
          <packing>
            <property name="position">0</property>
          </packing>
        </child>
        <child>
          <object class="GtkButton" id="myButton">
            <property name="label" translatable="yes">ZeroTutoriel</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
            <signal name="clicked" handler="on_myButton_clicked"/>
          </object>
          <packing>
            <property name="position">1</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
</interface>

tu trouveras beaucoup d'informations (et de tutoriels sur Python et PyGTK)  sur le plus grand site francophone de programmation ici : Le site du Zero


Le jour où j'ai découvert le libre, j'ai su que je ne reviendrais jamais en arrière.
The OpenShot Team : http://www.openshotvideo.com/
Mon blog perso sur le multimédia et OpenShot : http://linuxevolution.wordpress.com/
Google+ : https://plus.google.com/u/0/111472725110173916234/posts

Hors ligne