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 :

validation par toucher ENTER sur gtk.Dialog


Sujet :

GTK+ avec Python

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 147
    Points : 88
    Points
    88
    Par défaut validation par toucher ENTER sur gtk.Dialog
    bonjour

    J'ai une question surement très classique. Bon j'avoue que j'ai un trou de mémoire et n'est pas trouvé bonheur chez moteur goo....

    il y a t-il un moyen de valider par la frappe touche ENTER sur un gtk.Dialog en complément de l'appui de la touche "validez" qui je trouve n'ai pas 100% ergonomique en frappe rapide où on a l'habitude de taper ENTER pour valider une saisie et un passage au paramètre suivant.

    quel serait le connect à activer dans ce cas ?
    Je trouve que la doc des connecteurs n'est suffisamment limpide entre action concrète et la constante associée
    ci-dessous un exemple où la touche enter est inactive


    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    #!/usr/bin/env python
    # -*- coding: ISO-8859-1 -*-
    import sys
    import time
    try:
        import pygtk
        pygtk.require("2.0")
    except:
        pass
    try:
        import gtk
        import gobject
        import string
    except:
        sys.exit(1)
    class dialogue():
     
        def settitre(self, champsaisie,evenement):
            self.Titre=champsaisie.get_text() #  la bonne méthode ?????
            #print "Contenu du champ de saisie : %s\n" % self.Titre
            print "Contenu du champ de saisie : %s" % self.Titre
     
        def validation(self,evenement):
            self.result = gtk.RESPONSE_OK
            print "action en cours"
     
        def __init__(self,texteAsaisir,phrasesaisie,fenetreparent=None,complement=None): 
     
            self.fenetreparent=fenetreparent
            self.texteAsaisir=texteAsaisir
            self.phrasesaisie=phrasesaisie
            self.Titre=""
            self.complement_ici=complement # complément d'affichage dans la fenêtre un texte très long une liste etc...
     
        def run(self):
            #++++++++++++++++++++++++++++++++
            # Creation de la boite de dialogue
            # 1 bouton Valider
            # 1 bouton Annuler
            #++++++++++++++++++++++++++++++++
            BoiteNote = gtk.Dialog(self.texteAsaisir, self.fenetreparent,
                gtk.DIALOG_MODAL,
                (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,gtk.STOCK_OK, gtk.RESPONSE_OK))
     
            #étage création du bandeau supérieur
            self.boite_bandeau_haut = gtk.HBox(False,1)
     
            #titre de la fiche
            etiquettetitre = gtk.Label(self.phrasesaisie)
            self.boite_bandeau_haut.pack_start(etiquettetitre, False, False, 0)
            champsaisie = gtk.Entry()
            champsaisie.set_width_chars(60) # def le largeur de boite
            champsaisie.set_editable(True)
            #La méthode qui suit permet de définir une partie du texte comme sélectionnée, 
            #de start (début) à end (fin). Cette option est principalement utilisée dans les cas 
            #où l'on fixe un texte par défaut pour le champ de saisie et que l'on souhaite que 
            #l'utilisateur puisse le supprimer facilement.
            champsaisie.connect("event", self.settitre)  # <------------------ pas BUG ?????
     
            self.boite_bandeau_haut.pack_start(champsaisie, False, False, 0)
     
            #ajout de l'horizontal box dans la vertical box
            # dessous j'ai mis False au lieu de True pour que la boîte ne s'étende pas automatiquement
            if self.complement_ici!=None:
                #ajout de texte complémentaire pour aide à la saisie
                for element in self.complement_ici:
                    etiquettetitre = gtk.Label(element)
                    BoiteNote.vbox.pack_start(etiquettetitre, False, True, 0)
                    #print "coucou"
     
            champsaisie.connect("activate",self.validation)# pour connecteur de la touche entrée pour valider la saisie par touche entrée
     
            # la dernière ligne c'est pour la saisie
            BoiteNote.vbox.pack_start(self.boite_bandeau_haut, False, True, 0)
     
            # Affichage des elements de la boite de dialogue
            BoiteNote.vbox.show_all()
     
            # On lance la boite de dialogue et on recupere la reponse
            self.result = BoiteNote.run()
     
            if self.result == gtk.RESPONSE_OK:
                # L'utilisateur valide
                print" ==============> validation OK"
            else:
                # L'utilisateur annule (soit gtk.RESPONSE_CANCEL, soit gtk.RESPONSE_NONE)
                print" ==============> annulation saisie"
     
            # Destruction de la boite de dialogue
            BoiteNote.destroy()
     
            return self.result, self.Titre
     
     
    if __name__ == "__main__":
        # essai 1
     
        test=dialogue("texteAsaisir","phrasesaisie")
     
        result, valdate =test.run()
        if (result == gtk.RESPONSE_OK):
            print "recuperation de la donnéees  %s " %valdate
    Merci d'avance pour un éclairaige sur les connecteurs

  2. #2
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut
    Salut,

    Il doit y avoir moyen de faire ça en activant le focus sur le bouton concerné.

    Cherche déjà la référence du bouton (à grands coups de "get_children()" à partir de "BoiteNote.vbox"), puis regarde du côté des fonctions grab_focus et grab_default.


    -

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 327
    Points : 257
    Points
    257
    Par défaut
    Bonjour a vous,

    A première vus cela n'est pas très compliqué... si vous utilisez "glade". En effet, sous glade vous pouvez lorsque vous selectionnez le bouton :

    * lui attribuer le focus comme la dit "monnomamoi" et dans ce cas lorsque vous cliquerez sur entrer cela activera la fonction attribué au clic du bouton

    * sinon vous pouvez lui donner un raccourcie clavier, vous lui dites : lorsque je presse la touche "entrer" tu appelles la fonction...

    Tout ce qui se fait sous glade est possible manuellement, quoi qu'il en soit voici les deux techniques qui vous permettront de réaliser votre projet.

    Cordiallement...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 147
    Points : 88
    Points
    88
    Par défaut
    Bonjour
    Il n'est jamais trop tard pour boucler une discussion.

    Mon problème a été tout simplement résolu par un ajout de code du type:
    window.set_default_response(gtk.RESPONSE_OK) ,


    où window est ma fenêtre active, une instance de la class gtk.Dialog

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/04/2014, 18h11
  2. Validation par la toucher Enter sur un bouton
    Par Zouko dans le forum ASP.NET
    Réponses: 2
    Dernier message: 11/06/2008, 10h38
  3. [DOM] Validation par DTD bloquant sur les ID
    Par hicham285 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 08/04/2008, 15h04
  4. Désactiver la validation par ENTER
    Par sami_c dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 05/06/2006, 10h44
  5. [FLASH MX2004] Toucher Enter(Entrée) non detectée par le listener
    Par Demco dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 04/05/2006, 13h19

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