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

Caml Discussion :

[Lablgtk] Soucis avec GEdit.entry


Sujet :

Caml

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 26
    Points : 15
    Points
    15
    Par défaut [Lablgtk] Soucis avec GEdit.entry
    Bonjour, j'utilise la bibliothèque lablgtk et j'aimerais faire une zone de saisie avec GEdit.entry. Le soucis c'est que je n'arrive pas à récupérer le contenu du widget, que j'aimerais afficher simplement dans la console à l'appui d'un bouton. J'ai essayé avec my_entry#text mais ça renvoi toujours une chaine vide, comme si le widget n'était pas updaté ! Une idée ?

  2. #2
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Bonjour,
    c'est pour le moins étonnant. Pourrais-tu nous donner quelques extraits pertinents de ton code ? (notamment la création du GEdit.entry, la lecture du #text et l'évaluation du string résultant).

    Cdlt,

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Je vais mettre tout mon code vu qu'il est très court :

    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
     
    let _ = GMain.init ()
     
    let window = GWindow.window
            ~title:"The cake is a lie"
            ~border_width: 5
            ~height:400
            ~width:400 ()
     
    let box = GPack.vbox
            ~homogeneous: true
            ~packing:window#add ()
     
    let entry = GEdit.entry
            ~text: ""
            ~packing: (box#pack ~fill:false) ()
     
    let ok = GButton.button
            ~label:"Ok"
            ~packing: (box#pack ~fill:false) ()
     
    let print msg () =
            Printf.printf "%s\n" (msg);
            flush stdout
     
    let _ = window#connect#destroy ~callback:GMain.quit;
            ok#connect#clicked ~callback:(print entry#text);
            window#show ();
            GMain.main ()
    Voila merci de m'aider ^^

  4. #4
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    L'erreur est assez subtile.

    La fonction (print entry#text) est de type unit -> unit, c'est donc effectivement un callback que le bouton peut invoquer dès qu'il est pressé.

    Mais, le soucis est que entry#text n'est pas réévaluée à chaque fois que le callback est appelé : elle est évaluée lors de la définition du callback (c'est-à-dire au lancement de l'application, lorsqu'entry est vide).

    Une solution pourrait être de décharger le travail de l'évaluation de entry par print :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    let print () =
       let msg = entry#text in
       Printf.printf "%s\n" (msg) ;
       flush stdout
    Ainsi, la méthode #text serait appelée non pas au lancement de l'application, mais lorsque le bouton est appuyé.

    Cordialement,

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Ah ouai d'accord ! Merci beaucoup ça marche maintenant ^^ !

  6. #6
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Bonsoir,

    À noter que c'est une erreur très fréquente avec LablGTK. Une solution classique est de rajouter un unit suplémentaire, comme ceci :
    ~callback: (fun () -> foo bar#text)


    Cordialement,
    Cacophrène

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

Discussions similaires

  1. quelques soucis avec word 2000
    Par ramchou dans le forum Word
    Réponses: 3
    Dernier message: 06/09/2004, 18h13
  2. SOucis avec une reequete imbriquee
    Par Ni4k dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/03/2004, 08h56
  3. souci avec un algorithme
    Par slider16 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/03/2004, 17h17
  4. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52
  5. Réponses: 4
    Dernier message: 16/02/2003, 12h16

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