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 :

afficher des courbes sur un seul "axes" d'une interface utilisateur


Sujet :

Interfaces Graphiques

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 40
    Points : 25
    Points
    25
    Par défaut afficher des courbes sur un seul "axes" d'une interface utilisateur
    Salut!

    J'aimerai faire encore un petit truc sur mon programme: celui ci afficher des graphes avec l'instruction plot au fur et à mesure des calculs. Ceux ci apparaissent donc chacun dans une fenêtre graphique classique. Seulement j'en ai une dizaine et ça fait vraiment foulli d'avoir des graphes dans tous les sens. J'aimerai alors pouvoir utiliser un axes dans l'interface graphique, avec un popup menu à côté qui me permettrait d'afficher une seule de ces courbes à la fois dans cet "axes". J'ai cherché et trouvé quelques instructions telles que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    reponse=get(handles.popupmenu1,'value'); % pour connaître ce qui est sélectionné dans le popup menu et donc quelle graphe est à afficher
    if courbe==reponse
    plot(handles.axes1,courbe)% essayer de l'afficher dans l'"axes" de l'interface.
    end
    Ca ne fonctionne pas vraiment, car je ne sais pas comment rajouter un élément dans mon popupmenu (et peut être aussi que mon instruction plot est mal codée). En effet, au fur et à mesure de l'exécution, des graphes s'affichent, car l'utilisateur doit les consulter pour continuer. Je veux dire par là que je ne peux pas tout afficher à la fin de l'exécution. Il faut que mon popupmenu s'enrichisse au fur et à mesure de l'exécution du programme, et je ne sais pas comment le faire.
    Si quelqu'un pouvait m'aider svp!

    Merci d'avance!

  2. #2
    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 : 40
    Localisation : France

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

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

    Pour définir les valeurs de ton popup, il faut utiliser la commande SET et modifier la propriété String, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    set(handles.popupmenu1, 'String', [get(handles.popupmenu, 'String'), {'courbe 2'}]);
    Je te conseille d'aller jeter un oeil sur les tutoriaux, c'est expliqué plus clairement

    Bonne soirée,
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 40
    Points : 25
    Points
    25
    Par défaut
    Merci Duf.

    J'ai déjà regardé les tutoriels. Ce qui se passe maintenant est que j'ai :

    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
    function pushbutton1_Callback(hObject, eventdata, handles)
    T(1,1)={'blabla'}
    T(3,1)={'moind'}
    x=[1,2,3]
    y=[654,321,235]
    set(handles.popupmenu1,'string',T(:,1))
     
     
    % --- Executes on selection change in popupmenu1.
    function popupmenu1_Callback(hObject, eventdata, handles)
     
    reponse=get(hObject,'Value')% pour connaître ce qui est sélectionné dans le popup menu et donc quelle graphe est à afficher
     
    xcourbe=get(handles.pushbutton1,{'x'})%essayer de récupérer les matrice x et y de la fonction pushbutton1
     
    ycourbe=get(handles.pushbutton1,{y})
    if reponse==1
    plot(handles.axes1,xcourbe,ycourbe)% essayer de l'afficher dans l'"axes" de l'interface.
    end
    if reponse=='3'
        plot(handles.axes,'asd')
    end
    J'ai besoin d'afficher une courbe dont l'abscisse est x et l'ordonnée y, mais je n'arrive pas à les récupérer de la fonction principale "pushbutton_callback".

  4. #4
    Expert éminent sénior
    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
    Points : 14 830
    Points
    14 830
    Par défaut
    Tels que tu les as définis x et y ne sont effectivement connus que dans pushbutton_callback.

    Plusieurs possibilités s'offrent à toi pour les enregistrer et pouvoir les réutiliser par ailleurs (expliqués dans les tutoriels).

    Par exemple dans la structure handles. Exemple pour x :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function f1(...)
    x=...
    handles.x=x;
    guidata(gcbf,handles);
    %...
    function f2(...)
    handles = guidata(gcbf);
    x=handles.x;
    Règles du Forum

    Adepte de la maïeutique

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 40
    Points : 25
    Points
    25
    Par défaut
    Merci CaroLine ça fonctionne.

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

Discussions similaires

  1. Afficher des courbes sur des pages web
    Par totempat dans le forum Simulink
    Réponses: 2
    Dernier message: 03/09/2008, 17h19
  2. Réponses: 2
    Dernier message: 19/12/2005, 20h11
  3. Afficher des images sur une grille
    Par Coussati dans le forum Composants VCL
    Réponses: 3
    Dernier message: 27/10/2005, 09h27

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