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 :

Affichage variable d'un ('Style','text') + comment intégrer un graph issu d'un autre fichier .m ?


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 13
    Par défaut Affichage variable d'un ('Style','text') + comment intégrer un graph issu d'un autre fichier .m ?
    Bonjour,

    J'ai 2 petits problèmes à résoudre, je m'explique ...

    1) Avec le code suivant, j'ai créé un uicontrol de type 'text' qui a pour but d'afficher une variable nommée "Pe" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    hPe = uicontrol(dataPeclet,'Style','text','Units','Normalized',...
                                  'String','Pe =',...
                                  'Position',[0.45,0.45,0.1,0.25],...
                                  'Tag','nombrepeclet');
    Ce nombre "Pe" dépend de 3 autres variables (paramétrables grâce à des EDIT BOXES) qui sont "V", "a" et "rs", autrement dit : Pe = f(V,a,rs) . J'aimerais que le 'string' de mon uicontrol hPe change "en direct" lorsque j'édite les variables "V", "rs" ou "a".

    J'ai fait appel à un callback :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    hPe = uicontrol(dataPeclet,'Style','text','Units','Normalized',...
                                  'String','Pe =',...
                                  'Position',[0.45,0.45,0.1,0.25],...
                                  'Callback',@Peclet,...
                                  'Tag','nombrepeclet');
    associé à la fonction suivante :
    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
    function Peclet(hObject,eventdata)
         
            % je recupère les variables et je les convertis
            a = str2double(get(findobj('Tag','diffusivite'),'string'));
            V = str2double(get(findobj('Tag','vitesse'),'string'));
            rs = str2double(get(findobj('Tag','rayonsource'),'string'));
    
            Pe = V*rs/a ;
         
            % je modifie le 'string' de hPe
            toto = findobj('tag','nombrepeclet');
            set(toto,'string',num2str(Pe))
         
         
         end
    ... mais le 'string' ne se modifie pas. J'ai essayé un "num2str(Pe)" directement dans la définition de mon hPe, sans succès :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ??? Undefined function or variable 'Pe'
    ... apparement normal puisque je ne définis et convertis toutes mes variables (via un pushbutton) qu'après la création de tous mes uicontrols.

    Quelqu'un aurait-il une idée ?


    2) Mon premier fichier "fichier1.m" crée ma GUI. Mon deuxième fichier "fichier2.m" reçoit les données du 1er fichier et trace une courbe de résultats dans une nouvelle figure. J'aimerais que cette courbe apparaisse dans la même figure que ma gui.

    J'ai préalablement créé dans le 1er fichier un uicontrol de type 'axes' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hTemp = axes('Units','Normalized','Position',[0.05,0.55,0.4,0.4]);
    Y a t-il une commande pour cela ?



    Voila, c'est (enfin) tout pour mes questions
    Merci d'avance pour vos réponses .

  2. #2
    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
    Question 1 :
    La callback d'un objet de style text n'est JAMAIS appelé puisqu'un callback est appelé lorsqu'il y a une action sur l'objet.

    Là tu n'agis pas sur l'objet text mais sur les objets edit.

    Il faudrait donc que cette fonction soit le callback de tes objets de style edit ....
    MAIS....
    Le callback d'un objet de style edit ne va s'exécuter que sous certaines conditions décrites dans la documentation (je fais ma paresseuse ) :
    To execute the callback routine for an edit text control, type in the desired text and then do one of the following:

    Click another component, the menu bar, or the background of the GUI.

    For a single line editable text box, press Enter.

    For a multiline editable text box, press Ctl+Enter.
    Donc ce ne sera peut-être pas tout à fait ce que tu veux.
    Je n'ai pas vraiment de solution à te proposer (enfin si y'a un truc mais c'est trop compliqué...)


    Question 2 :
    c'est moins clair mais en gros il faut que tu connaisses le handle de ton objet axes et que tu traces dedans (les fonctions de tracés comme PLOT peuvent prendre en paramètre le handle de l'axe où on veut tracer)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 13
    Par défaut
    Merci de répondre aussi rapidement

    Question 2 :
    c'est moins clair mais en gros il faut que tu connaisses le handle de ton objet axes et que tu traces dedans (les fonctions de tracés comme PLOT peuvent prendre en paramètre le handle de l'axe où on veut tracer)
    C'est bon, j'ai trouvé ^^ C'est moi le paresseux dans l'histoire, j'avais juste à ouvrir la doc :p



    Question 1 :
    Donc ce ne sera peut-être pas tout à fait ce que tu veux.
    Je n'ai pas vraiment de solution à te proposer (enfin si y'a un truc mais c'est trop compliqué...)
    hmm un truc plus compliqué ? (s'enfuit loin très loin)

    J'ai prévu quelque chose d'autre au cas où ça ne serait pas possible, alors c'est pas très grave.


    Merci encore pour tes réponses.

  4. #4
    Membre émérite Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Par défaut
    salut
    d'après ce que j'ai compris je ferais plutôt appel à ta fonction dans le callback de chacun des edit (a, V et rs)

    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
    function edit_a_cb(src, evnt)
    %...
    Peclet
     
    function edit_V_cb(src, evnt)
    %...
    Peclet
     
    function edit_rs_cb(src, evnt)
    %...
    Peclet
     
    function Peclet
     
            % je recupère les variables et je les convertis
            a = str2double(get(findobj('Tag','diffusivite'),'string'));
            V = str2double(get(findobj('Tag','vitesse'),'string'));
            rs = str2double(get(findobj('Tag','rayonsource'),'string'));
     
            Pe = V*rs/a ;
     
            % je modifie le 'string' de hPe
            toto = findobj('tag','nombrepeclet');
            set(toto,'string',num2str(Pe))

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 13
    Par défaut
    Bonjour,

    ça marche très bien. Merci Tubaas


  6. #6
    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
    Pourquoi s'ennuyer à avoir 3 callbacks ? (à moins d'avoir des tâches particulières pour chacun des edits)

    Tu mets tout simplement la fonction Peclet comme callback des 3 edit.
    (Penser à mettre les arguments d'entrée par défaut sinon ça va planter)

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

Discussions similaires

  1. Comment charger un graphe java sur une autre page ?
    Par sebbui dans le forum Débuter avec Java
    Réponses: 0
    Dernier message: 18/12/2011, 11h15
  2. Affichage variable dans un champ texte et espaces
    Par bonuxis dans le forum Langage
    Réponses: 2
    Dernier message: 04/03/2010, 10h01
  3. Réponses: 3
    Dernier message: 23/09/2006, 15h19
  4. Réponses: 5
    Dernier message: 16/07/2005, 00h01
  5. Réponses: 8
    Dernier message: 29/11/2004, 16h28

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