IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec Python Discussion :

Remplacer un widget dans une table


Sujet :

GTK+ avec Python

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur syst�mes et r�seaux
    Inscrit en
    Mai 2003
    Messages
    48
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : Administrateur syst�mes et r�seaux

    Informations forums :
    Inscription : Mai 2003
    Messages : 48
    Par d�faut Remplacer un widget dans une table
    Bonjour,

    J'aimerai remplacer un widget de type gtk.Button par un autre du type gtk.Image au sein d'une table. Je pense avoir trouver la mani�re de proc�der mais le r�sultat est vraiment al�atoire ... Le gtk.Image ne s'affiche forc�ment....

    Voici le fichier glade et le programme ci-dessous

    Pour info, gazpacho est n�cessaire pour faire fonctionner ce programme

    Le programme est simple, quand vous cliquez sur l'un des trois boutons (button5, button6, button7), le bouton est supprim� et une image doit apparaitre .....

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    # -*- coding: utf-8 -*-
    import pygtk
    pygtk.require('2.0')
    import gtk
    from gazpacho.loader.loader import ObjectBuilder
     
    class Window:
        def __init__(self):
            self.wt = ObjectBuilder('test-table.glade')
            self.window = self.wt.get_widget('window')
            signals = {"on_button_close_clicked" : self.on_button_close_clicked,
                       "on_button5_clicked" : self.on_button5_clicked,
                       "on_button6_clicked" : self.on_button6_clicked,
                       "on_button7_clicked" : self.on_button7_clicked}
            self.wt.signal_autoconnect(signals)
     
        def on_button5_clicked(self, widget):
            self.test("button5")
     
        def on_button6_clicked(self, widget):
            self.test("button6")
     
        def on_button7_clicked(self, widget):
            self.test("button7")
     
        def on_button_close_clicked(self, widget):
            gtk.main_quit()
     
        def test(self, str):
            table = self.wt.get_widget('table1')
            children = table.get_children()
            # img va remplacer le bouton
            img = gtk.Image()
            img.set_from_stock(gtk.STOCK_YES,5)
            cpt=0
            for child in children:
                if isinstance(child, gtk.Button) and child.get_label() == str:
                    table.remove(child)
                    table.attach(img,1,2,cpt,cpt+1)
                cpt+=1
                self.window.show_all()
     
    if __name__ == "__main__":
        win = Window()
        win.window.show()
        gtk.main()
    Je n'arrive pas � comprendre le caract�re al�atoire du probl�me.

    Une id�e ?

  2. #2
    R�dacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de donn�es
    Inscrit en
    Juin 2004
    Messages
    5 840
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 42
    Localisation : France

    Informations professionnelles :
    Activit� : Administrateur de base de donn�es

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par d�faut
    Bonjour,

    A la fin de la fonction test, plut�t que de faire un show_all je me contenterais de :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        def test(self, str):
            table = self.wt.get_widget('table1')
            children = table.get_children()
            # img va remplacer le bouton
            img = gtk.Image()
            img.set_from_stock(gtk.STOCK_YES,5)
            cpt=0
            for child in children:
                if isinstance(child, gtk.Button) and child.get_label() == str:
                    table.remove(child)
                    table.attach(img,1,2,cpt,cpt+1)
                cpt+=1
            img.show()

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur syst�mes et r�seaux
    Inscrit en
    Mai 2003
    Messages
    48
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : Administrateur syst�mes et r�seaux

    Informations forums :
    Inscription : Mai 2003
    Messages : 48
    Par d�faut
    Merci gege2061 pour ton aide. J'ai proc�d� � la modification mais pas de changement.

  4. #4
    R�dacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de donn�es
    Inscrit en
    Juin 2004
    Messages
    5 840
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 42
    Localisation : France

    Informations professionnelles :
    Activit� : Administrateur de base de donn�es

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par d�faut
    Citation Envoy� par sluke Voir le message
    J'ai proc�d� � la modification mais pas de changement.
    Tu as des messages d'erreur dans la console ? Sinon le probl�me survient lors du premier clique sur un bouton ou lors d'un second clic ?

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur syst�mes et r�seaux
    Inscrit en
    Mai 2003
    Messages
    48
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : Administrateur syst�mes et r�seaux

    Informations forums :
    Inscription : Mai 2003
    Messages : 48
    Par d�faut
    En fait, je n'ai pas de message d'erreur dans la console.
    Une autre pr�cision, lorsque je clique sur un bouton, celui-ci est supprim� (donc la suppression fonctionne).
    Je constate que le r�sultat d�pend de la combinaison de "clic" effectu�. Je m'explique :
    - je clique sur button5 (pas d'image de remplacement), puis button6 (pas d'image) enfin button7 (l� l'image apparait � la place du button7)
    autres essais :
    - je clique sur button7 (pas d'image de remplacement), puis button6 (l'image s'affiche) enfin button5 (l� extraordinaire : toutes les images sont l� !)
    - je clique sur button6 (l'image s'affiche), puis button7 (pas d'image) enfin button5 (l'image du button7 s'affiche)

    Je me suis arr�ter l� mais on voit bien que quelque chose cloche ... Si je relance le programme avec les m�mes combinaisons, le r�sultat est le m�me que celui d�crit ci-dessus.

Discussions similaires

  1. [AC-2007] Remplacement de caract�res dans une table compl�te
    Par Viggen0020 dans le forum Requ�tes et SQL.
    R�ponses: 4
    Dernier message: 05/08/2009, 15h49
  2. R�ponses: 11
    Dernier message: 11/11/2008, 18h38
  3. Remplacer des caract�res dans une table
    Par cycy50 dans le forum Mod�lisation
    R�ponses: 11
    Dernier message: 19/10/2007, 15h02
  4. R�ponses: 2
    Dernier message: 08/08/2007, 15h32
  5. Positionner un WidGet dans une table
    Par sorry60 dans le forum GTK+ avec C & C++
    R�ponses: 7
    Dernier message: 05/11/2005, 19h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo