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

Interfaces Graphiques Discussion :

problèmes dans interface GUI


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Par défaut problèmes dans interface GUI
    Bonsoir,
    j'ai à faire une surface GUI.
    J'ai un problème : j'ai fait des pop-up menu et je veux utiliser le choix que j"ai fait de ces ces pop-up menu dans des callback d'autres boutons et j'arrive pas à le faire....Si quelqu'un peut m'aider comment je peux faire appel aux résultats des pop-up menu pour les utiliser dans d'autres callback ....

    Merci

  2. #2
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    La solution la plus basique est d'utiliser des variables globales. Cependant, tu peux utiliser la structure handles de ton IHM avec des set dans les callback des items du pop menu, et des get dans les callback des boutons.

  3. #3
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Par défaut
    Merci.
    Mais je suis débutant d'interface GUI, donc si tu peux me dire comment je peux déclarer des variables globales et comment j'utilise les 'handles" et comment je vais leur déclaration et leurs appel .

  4. #4
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    Je te donnes la solution avec les variable globales :

    Dans le callback des popmenu, tu déclares une variable globale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    callback tu popmenu 1
    global vchoix ;
    vchoix = 'item1' ;
     
    callback tu popmenu 2
    global vchoix ;
    vchoix = 'item2' ;
     
     
    callback tu popmenu 2
    global vchoix ;
    vchoix = 'item3' ;
    et maintenant dans la partie où tu veux connaitre sur quel item l'utilisateur à cliqué, tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    global vchoix ;
    switch(vchoix)
       case 'item1' : 
                              disp('utilisateur a cliqué sur item1')
       case 'item2' : 
                              disp('utilisateur a cliqué sur item2')
        case 'item3' : 
                              disp('utilisateur a cliqué sur item3')
     end

    Voilà, c'était un exemple rapide

    Tu peux regarder ici pour de plus amples informations

  5. #5
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Par défaut
    Moi j'ai fait les pop-up menu et je veux utiliser le résultat du choix ensuite pour une fonction d'un autre bouton donc comment dire dans le callback du pop-up menu que je fais utiliser la variable pour un autre bouton et comment faire dans le callback de ce bouton pour appeler la vaiable du pop-up menu pour l'utiliser..

    Merci.

  6. #6
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    Je t'es pas bien compris !

    Tu peux montrer un code M-File et de commenter ce que tu veux ?

  7. #7
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Par défaut relation entre callbacks
    Bonjour,

    J'ai à appeler les valeurs de deux pop-up menu dans un autre callback.
    Voici le code du premier pop-up menu:
    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
    function sexe_Callback(hObject, eventdata, handles)
    % hObject    handle to sexe (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
     
    switch get(handles.sexe,'Value')   
        case 1
            set(handles.testing_staticText,'FontSize',homme);
        case 2
            set(handles.testing_staticText,'FontSize',femme);
     
        otherwise
     
    end      
     
    guidata(hObject,handles);
    et voici le code du deuxième pop-up
    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
    function age_Callback(hObject, eventdata, handles)
    % hObject    handle to age (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    switch get(handles.age,'Value')   
        case 1
            set(handles.testing_staticText1,'FontSize',30);
        case 2
            set(handles.testing_staticText1,'FontSize',40);
        case 3
            set(handles.testing_staticText1,'FontSize',50);
        case 4
            set(handles.testing_staticText1,'FontSize',60);
        case 5
            set(handles.testing_staticText1,'FontSize',70);
        case 6
            set(handles.testing_staticText1,'FontSize',80);
        case 7
            set(handles.testing_staticText1,'FontSize',90);
     
        otherwise
     
    end
     
     
    guidata(hObject,handles);
    Et je veux utiliser les valeurs que je vais ensuite choisir des pop-up dans le code du callback suivant:
    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
    function pertes_Callback(hObject, eventdata, handles)
    % hObject    handle to pertes (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    switch a
        case 'homme'
     
            coef=[0.003 0.003 0.0035 0.004 0.0055 0.007 0.0115 0.016 0.018 0.022];%%%ce sont les coefficients
     
                pertes=coef.*(b-18)^2;
                p=polyfit(freq,pertes,4);
                f=polyval(p,freq);
                plot(freq,pertes,'o') ; title (' Approximation des pertes auditives chez l homme ');
            xlabel (' frequence(KHz) ') ;ylabel ('pertes auditives (dB) ') ;hold on;plot(freq,f), grid on;
     
     
     
        case 'femme'
            coef=[0.003 0.003 0.0035 0.004 0.005 0.006 0.0075 0.009 0.012 0.015];
     
                pertes=coef.*(b-18)^2;
                p=polyfit(freq,pertes,6);
                f=polyval(p,freq);
                plot(freq,pertes,'o'); title (' Approximation des pertes auditives chez la femme');
            xlabel (' frequence(KHz) '),ylabel ('pertes auditives (dB) ' ) ;hold on;plot(freq,f), grid on ;
     
     
     
    end
    guidata(hObject,handles);
    Je veux que 'a' prenne la valeur choisie dans le popup 'sexe' et b prenne la valeur choisie dans le popup 'age'.

    Merci

  8. #8
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Bonjour,

    Pour répondre à ta question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    sexe_list = get(handles.sexe, 'String');
    a = sexe_list{get(handles.sexe, 'Value')};
     
    age_list = get(handles.age, 'String');
    b = sexe_list{get(handles.age, 'Value')};
    Sinon je pense que le code des Callbacks de tes popupmenus est faux dans le sens où ca m'étonnerais que ca fasse ce que tu souhaites
    Normalement, tu devrais pouvoir supprimer ce qui est contenu dans ces Callbacks.

    Bonne journée,
    Duf

  9. #9
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Par défaut
    Quand j'ai fai ce que vous avez dit ; le message d'erreurs suivant apparait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ??? Error using ==> subsindex
    Function 'subsindex' is not defined for values of class 'cell'.
     
    Error in ==> interface_sofiene>pertes_Callback at 342
    a = sexe_list{get(handles.sexe, 'Value')};
     
    Error in ==> gui_mainfcn at 96
            feval(varargin{:});
     
    Error in ==> interface_sofiene at 42
        gui_mainfcn(gui_State, varargin{:});
     
    Error in ==>
    @(hObject,eventdata)interface_sofiene('pertes_Callback',hObject,eventdata,guidata(hObject))

  10. #10
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Cette erreur est étonnante.

    Que se passe-t-il si tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A={'homme','femme'};
    val=2;
    A{val}
    Dans la fenêtre MATLAB ?

  11. #11
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Par défaut
    Comment ça !!
    Si quelqu'un peut me coder un pop-up tout simple pour faire un pareil et comment utiliser les résultats de ces pop-up ensuite ??? Merci

Discussions similaires

  1. Différents problèmes dans un GUI
    Par boxydruM dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 22/12/2008, 17h06
  2. Réponses: 5
    Dernier message: 27/10/2008, 09h25
  3. probléme dans le gui
    Par lionnaa dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 29/05/2008, 10h09
  4. [MySQL] problème dans mon interface admin
    Par ni.co dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 22/05/2008, 11h41
  5. Problème avec 'light' sur un patch dans un GUI
    Par pierolapuree dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 16/02/2007, 14h35

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