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 C & C++ Discussion :

entry de radio button inaccessible : bug ?


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 56
    Par défaut entry de radio button inaccessible : bug ?
    Bonjour à tous,
    Je souhaite utiliser les gtkradiobutton et l'un des boutons ne doit pas avoir de label mais un gtkspinbutton. Il y a un example là :
    http://library.gnome.org/devel/gtk/2...dioButton.html
    qui permet de mettre un gtkentry dans le container du gtkradiobutton.
    le seul problème est que l'entry n'est pas accessible, en cliquant dessus, cela ne fait qu'activer le bouton radio.
    Voici le code :
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <stdbool.h>
    #include <gtk/gtk.h>
     
    //gcc -std=gnu99 -Wall $(pkg-config --cflags gtk+-2.0) $(pkg-config --libs gtk+-2.0) main.c
     
    void create_radio_buttons (void);
     
    int main(int argc, char** argv)
    {
        gtk_init(&argc, &argv);
        create_radio_buttons();
        gtk_main();
    }
     
    void create_radio_buttons (void) {
        GtkWidget *window, *radio1, *radio2, *box, *entry;
        window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        //g_signal_connect(G_OBJECT(window), "destroy"; G_CALLBACK(gtk_main_quit), NULL);
        box = gtk_vbox_new (TRUE, 2);
        /* Create a radio button with a GtkEntry widget */
        radio1 = gtk_radio_button_new (NULL);
        entry = gtk_entry_new ();
        gtk_container_add (GTK_CONTAINER (radio1), entry);              //avec la deuxieme ligne, cela fonctionne
        //gtk_box_pack_start (GTK_BOX (box), entry, TRUE, TRUE, 2);     //
        /* Create a radio button with a label */
        radio2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (radio1),
                    "I'm the second radio button.");
        /* Pack them into a box, then show all the widgets */
        gtk_box_pack_start (GTK_BOX (box), radio1, TRUE, TRUE, 2);
        gtk_box_pack_start (GTK_BOX (box), radio2, TRUE, TRUE, 2);
        gtk_container_add (GTK_CONTAINER (window), box);
        gtk_widget_show_all (window);
        return;
    }
    configuration : gtk 2.12.9-3, kubuntu 8.04.
    Une idée ?
    merci.

  2. #2
    Membre averti
    Homme Profil pro
    Géomaticien
    Inscrit en
    Février 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Février 2010
    Messages : 63
    Par défaut
    Tu as mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    radio2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (radio1),
                    "I'm the second radio button.");
    Ce ne serait pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    radio2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (entry),
                    "I'm the second radio button.");
    ?

    Le premier paramètre de la fonction doit être le widget avec lequel tu veux associer le GtkRadioButton. Si je ne me trompe pas dans l'exemple donné, tu veux l'associer avec un GtkEntry, or tu as mis comme associé avec le premier GtkRadioButton.

  3. #3
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Non, le premier paramètre de gtk_radio_button_new_with_label_from_widget est un GtkRadioButton. De ce que je comprends, la fonction inclut les widgets dans le même groupe, afin de pouvoir jouer leur fonction de bouton radio (n'admettre qu'un seul choix parmi plusieurs boutons radios d'un même groupe).

  4. #4
    Membre averti
    Homme Profil pro
    Géomaticien
    Inscrit en
    Février 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Février 2010
    Messages : 63
    Par défaut
    OK, je pensais qu'il fallait mettre dans la même GSList avec gtk_radio_button_new et que cette fonction permettait aisément de faire ce qu'il demande. Du coup, je ne vois pas où est le problème alors.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 56
    Par défaut
    merci de vous interesser à mon problème. Pour completer ce que dit liberforce,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    radio1 = gtk_radio_button_new (NULL);
    va implicitement creer une liste et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    radio2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (radio1),
                    "I'm the second radio button.");
    l'ajouter à la liste dont fait partie radio1.
    Pour ajouter l'entry, on considère le radiobutton comme un container avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_container_add (GTK_CONTAINER (radio1), entry);
    L'affichage est le bon, c'est simplement la méthode de saisie qui n'est pas celle que j'attends.
    En ajoutant l'entry dans la box, la methode de saisie est la bonne(ligne commentée). Je vais sûrement mettre l'entry dans la box pour que cela fonctionne mais ce qui m'étonne c'est qu'il s'agit d'un exemple donné dans la doc gtk.

  6. #6
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Tu ne peux pas ajouter un même widget dans deux conteneurs différents, cela m'étonne que GTK ne gueule pas.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 56
    Par défaut
    Moravski : Le probleme est qu'il est impossible d'écrire du texte dans l'entry, c'est le radio button qui 'prend la main'. Je pense que mon code est executable tout de suite (sur ma config), reste l'appel à gtk_main_quit qui ne marche pas ici (undefined ??) mais fonctionne dans mon aplication. Vous pouvez l'essayer, c'est juste l'exemple donné dans la doc stable et instable de gtk avec ce qu'il faut pour que ca compile autour.

    liberforce : je pense que le widget que j'ajoute dans deux container est l'entry (dans radio1 et box). Je ne l'ajoute pas dans les deux, je fais une fois l'un et une fois l'autre pour montrer la différence de comportement selon où le widget entry est placé.

    C'est bien gentil de vous soucier de mon probleme, merci.

  8. #8
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Ah, ok, effectivement, si tu insères le widget soit dans un conteneur, soit dans l'autre, alors effectivement, GTK ne se plaindra pas. Je vais essayer de regarder ton problème de plus près. Peut être que c'est un bug présent dans GTK 2.12, qui a tout de même 3ans 1/2 maintenant. Je teste et je te dis si cela fonctionne chez moi.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 56
    Par défaut
    merci.
    Oui, une mise à jour ne me pose pas de problème si c'est la solution, j'ai installé gtk il n'y a pas si longtemps pourtant.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 56
    Par défaut
    J'ai essayé d'installer gtk 2.24 à la main mais j'ai tout cassé, je retourne sur 2.12 voir si ca marche. Je vais sûrement devoir mettre à jour ma verion de kubuntu.

  11. #11
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    GTK 2.20.1 sous Mandriva Linux 2010.2, et j'ai effectivement le même bug que toi, c'est étrange...

  12. #12
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Bravo à toi, tu viens d'être affecté par le bug 320902 ouvert... il y a 5 ans !

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 56
    Par défaut
    Et ben merci, ce n'est pas trop grave, je vais simplement mettre un label avec mon bouton et l'entrée dans un container qui contiendra aussi le bouton.
    Le problème est le même sous debian squeeze et gtk 2.20.1-2.
    Résolu ?

  14. #14
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Citation Envoyé par autre mickael Voir le message
    Résolu ?
    Le fil de discussion, oui, le bug, non

Discussions similaires

  1. radio button
    Par Smash34 dans le forum Langage
    Réponses: 1
    Dernier message: 23/02/2006, 10h47
  2. Réponses: 3
    Dernier message: 16/12/2005, 15h35
  3. [débutante] Radio button
    Par monia dans le forum MFC
    Réponses: 1
    Dernier message: 01/07/2005, 10h15
  4. [JTree] Label + Textfield, Radio buttons, ..
    Par leup dans le forum Composants
    Réponses: 2
    Dernier message: 31/01/2005, 09h40
  5. value de radio button indéfinie (undefined)
    Par noinneh dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 28/12/2004, 12h25

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