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 :

Créer un popupmenu


Sujet :

Interfaces Graphiques

  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Par défaut Créer un popupmenu
    Bonjour j'ai créer un popumenu comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    handles(22)=uicontrol('style','popupmenu',...
        'units','pixels',...
        'position',[580 410 70 10],...
        'string','0,02|0,04|0,06|0,08|0,1',...
        'callback',@speed,...
        'Tag','time');
    Maintenant je veux juste que lorsque je sélectionne un des cas ma variable 'time' prenne soit 0,02 soit 0,04 etc

    Merci.

  2. #2
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 78
    Par défaut
    je pense que tu dois ajouter ça :

    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
     
     
    switch get(handles(22),'Value')
          case 1
               time = 0.02;
     
          case 2
               time = 0.04;
     
          case 3
               time = 0.06;
     
          case 4
               time = 0.08;
     
          case 5
               time = 0.1;
    end

  3. #3
    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
    Ou en plus simple (enfin surtout plus court):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    list_str = get(handles(22),'Value');
    time = str2num(list_str{get(handles(22),'Value')});


    Bon courage,
    Duf

  4. #4
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Par défaut
    Malheureusement Matlab me renvoie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ??? Cell contents reference from a non-cell array object.
     
    Error in ==> essai2>speed at 192
        time = str2num(list_str{get(handles(22),'Value')});
     
    ??? Error while evaluating uicontrol Callback
    Losrque je tente de l'afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      function speed (varargin)
     
        list_str = get(handles(22),'Value');
        time = str2num(list_str{get(handles(22),'Value')});    
     
        a=uicontrol(gcf,...
         'style','text',...
         'position', [560 390 100 300],...
         'string',num2str(time));
     
        end;
    et si je tape 'time' dans matlab il me dit que :
    ??? Undefined function or variable 'time'.

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Citation Envoyé par spinalrock Voir le message
    et si je tape 'time' dans matlab il me dit que :
    ??? Undefined function or variable 'time'.
    Tu as un réel problème de compréhension de la gestion des variables par MATLAB... enfin passons

    Sinon, il y a une petite erreur dans le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    val = get(handles(22),'value');
    list_str = get(handles(22),'string');
    time = str2num(list_str{val});

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    En plus (comme on me le souffle discrètement à l'oreillette), tu as mal rempli le PopUpMenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    handles(22)=uicontrol('style','popupmenu',...
        'units','pixels',...
        'position',[580 410 70 10],...
        'string',num2str((.02:.02:.1).','%.2f'),...
        'callback',@speed,...
        'Tag','time');
    Et le code devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    val = get(handles(22),'value');
    list_str = cellstr(get(handles(22),'string'));
    time = str2num(list_str{val});

  7. #7
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Par défaut
    matlab me renvoit toujours comme erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ??? Cell contents reference from a non-cell array object.
     
    Error in ==> essai2>speed at 196
        time = str2num(list_str{val});
     
    ??? Error while evaluating uicontrol Callback

    peut etre ai-je mal déclarer quelque chose dans mon handles ??

  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
    Dans un premier temps tu devrais regarder ce que tu récupères dans ton list_str, apparemment ca doit être par là qu'il y a un pb...

  9. #9
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 78
    Par défaut
    et si je tape 'time' dans matlab il me dit que :
    Citation:
    ??? Undefined function or variable 'time'.
    si tu veux récuperer une variable dans le command window depuis ton GUI (ex : time), tu peux utiliser la fonction "assignin", ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    assignin('base','time',time);

  10. #10
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Par défaut
    Merci le problème est résolu grâce à vous!!

  11. #11
    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
    Juste par curiosité, le problème venait d'où?

    Bonne journée,
    Duf

  12. #12
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Par défaut
    C'est ce que Dut avait dit j'avais mal déclaré mon pop-up menu

  13. #13
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Citation Envoyé par Dut Voir le message
    En plus (comme on me le souffle discrètement à l'oreillette), tu as mal rempli le PopUpMenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    handles(22)=uicontrol('style','popupmenu',...
        'units','pixels',...
        'position',[580 410 70 10],...
        'string',num2str((.02:.02:.1).','%.2f'),...
        'callback',@speed,...
        'Tag','time');
    Et le code devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    val = get(handles(22),'value');
    list_str = cellstr(get(handles(22),'string'));
    time = str2num(list_str{val});
    L'autre solution est bien entendu de faire l'inverse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    handles(22)=uicontrol('style','popupmenu',...
        'units','pixels',...
        'position',[580 410 70 10],...
        'string',{'.02' '.04' '.06' '.08' '.1'},...
        'callback',@speed,...
        'Tag','time');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    val = get(handles(22),'value');
    list_str = get(handles(22),'string');
    time = str2num(list_str{val});

Discussions similaires

  1. [Lazarus] Créer des menus dynamiquement sur un popupmenu
    Par dav999 dans le forum Lazarus
    Réponses: 7
    Dernier message: 19/11/2010, 05h06
  2. [PopupMenu] Créer dynamiquement un sous menu (submenu)
    Par MiJack dans le forum Composants VCL
    Réponses: 4
    Dernier message: 01/02/2006, 13h41
  3. Créer un interpréteur de langage inspiré du Basic
    Par Picasso dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 11/05/2002, 17h10
  4. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41
  5. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20

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