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 :

Relancer un GUI (avec nouveaux paramètres de simulation) sans la fermer


Sujet :

Interfaces Graphiques

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut Relancer un GUI (avec nouveaux paramètres de simulation) sans la fermer
    Bonjour,

    Je cherche à savoir s'il est possible de relancer une interface graphique, en modifiant les paramètres de simulation, sans devoir la fermer.

    Actuellement je suis obligé de :
    1 - Entrer les paramètres que je souhaite étudier
    2 - Simuler
    3 - Observer les résultats
    4 - Si je souhaite modifier des paramètres de simulation, je suis obligé de fermer l'interface et de recommencer à l'étape 1 (en entrant tout les paramètres de simulation, même si je veux en modifier qu'un).

    J'aimerais pouvoir ne modifier que le paramètre souhaité sans fermer le GUI et resimuler.

    Je vous remercie

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    De quelle façon entres-tu les paramètres de simulation?
    As-tu pensé à utiliser un sous-GUI?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Je rentre mes paramètres à l'aide de popups.

    La modifications des paramètres est bien prises en compte dans les variables du WS.
    Mais le soucis principal provient de l'affichage des courbes.

    Si lors de la 1ère simulation j'affiche les courbes (de vitesses), que je modifie les paramètres qui feront augmenter ma vitesse par exemple et que je resimule, la courbe qui sera affichée correspondra à la 1ère simulation et non à la 2e.

    J'ai l'impression qu'il garde en mémoire la 1ère courbe. J'ai essayé en faisant un "clear all" dans les fonctions qui m'affichent les courbes, mais sans succès (ça bloque ma simulation)

  4. #4
    Invité
    Invité(e)
    Par défaut
    Si comme tu le dis:
    Citation Envoyé par nilsmatlab Voir le message
    La modifications des paramètres est bien prises en compte dans les variables du WS.
    Tu n'aurais pas à priori le problème:
    Citation Envoyé par nilsmatlab Voir le message
    la courbe qui sera affichée correspondra à la 1ère simulation et non à la 2e.
    Es-tu sûr que la seconde n'est pas affichée? N'est-elle pas masquée par la première?
    clear all n'est pas la solution, pour effacer un graphique, c'est cla(monAxes)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Je te remercie, j'ai essayé avec cla(monAxes), et du coup les courbes ne s'affichent plus du tout.

    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 graphe_vitesse(hObj,Event)
    cla(axes_v)
    %Récupération des valeurs
    d1=getappdata(gcbf,'valeur_de_d1');
    v1=getappdata(gcbf,'valeur_de_v1');
     
    handles = guidata(gcbf);
    hplot = get(hObj,'UserData');
    if isempty(hplot)
     
      axes(handles.axes_v);
      hplot = plot(handles.axes_v,d1,v1,'b');
      hold(handles.axes_v,'on')
      grid(handles.axes_v,'on')
      set(hObj,'UserData',hplot);
    else
      if strcmp(get(hplot,'Visible'),'on'), set(hplot,'Visible','off')
      else set(hplot,'Visible','on')
      end
     
    end       
    guidata(gcbf,handles)

  6. #6
    Invité
    Invité(e)
    Par défaut
    Dis plutôt que tu obtiens une belle erreur
    ??? Undefined function or variable 'axes_v'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function graphe_vitesse(hObj,Event)
    handles = guidata(gcbf);
    cla(handles.axes_v)
    % ...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Effectivement, désolé pour cette erreur bête.

    Par contre, est ce normal que je n'arrive plus à "jouer" avec les courbes ? (Les faire apparaître et disparaître comme bon me semble)

    ??? Error using ==> get
    Invalid handle object.
    
    Error in ==> interface>graphe_bdv at 1755
      if strcmp(get(hplot,'Visible'),'on'), set(hplot,'Visible','off')
     
    ??? Error while evaluating uicontrol Callback
    J'arrive à faire apparaître l'une puis l'autre et c'est tout. Ceci est surement dû au fait que j'efface l'axe.

    Est-il possible d'obtenir les 2 (apparaître et disparaître + modification des paramètres pour nouvelles courbes)

  8. #8
    Invité
    Invité(e)
    Par défaut
    Oui cela est tout à fait normal, la commande CLA supprime tout les enfants de ton objet Axes.
    En regardant plus précisément ton code, je remarque que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if isempty(hplot)
        % Tu effectues ton tracé
        set(hObj,'UserData',hplot); % tu fixes la propriété 'UserData' qui n'est donc plus jamais "vide"
    else % Cas non vide: aucun renouvellement de tracé
        % Maniement de propriété 'Visible' seulement
    end
    Dernière modification par Invité ; 27/09/2011 à 14h11.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Je suis désolé mais je n'ai pas compris ta remarque.
    Ce que j'ai fait n'est pas correct ?

  10. #10
    Invité
    Invité(e)
    Par défaut
    J'imagine que tu appelles cette fonction pour faire le tracé...
    Donc on va suivre le déroulement de ton programme:
    • Tu règles tes paramètres pour la simulation 1
    • Tu fais la simulation qui va fixer les valeurs de d1 et v1
    • Tu appelles la fonction graphe_vitesse qui passe par le premier if isempty(hplot), fais le tracé et rentre hplot dans la propriété 'UserData'.

    • Tu règles tes paramètres pour la simulation 2
    • Tu fais la simulation qui va fixer les nouvelles valeurs de d1 et v1
    • Tu appelles la fonction graphe_vitesse, et que se passe-t'il?

    hplot est déjà rentré, et tu passes par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if strcmp(get(hplot,'Visible'),'on'), set(hplot,'Visible','off')
    else set(hplot,'Visible','on')
    end

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Donc pour pouvoir tracer la courbe dépendante des nouveaux paramètres, je suis obligé de créer une nouvelle fonction?
    Ou alors est-il possible de supprimer hplot lors de la nouvelle simulation ?

  12. #12
    Invité
    Invité(e)
    Par défaut
    Je ne sais pas vraiment pourquoi tu as prévu cette fonction graphe_vitesse, mais si j'étais toi, je placerais le code du tracé dans celui de ta simulation.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Je ne sais pas si c'est la bonne manière de procéder, mais j'ai créer des pushbutton de façon à afficher "courbe1", "courbe2...", et à chaque fois que je clique sur ce pushbutton, ça fait apparaître ou disparaître ma courbe.

    Et j'ai associé chaque pushbutton à une fonction.

Discussions similaires

  1. Actualiser activity avec des nouveaux paramétres
    Par xouzi dans le forum Android
    Réponses: 4
    Dernier message: 11/10/2012, 15h52
  2. [ADO/Access] Appel d’une requête avec des paramètres
    Par Taxenna dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/12/2004, 14h58
  3. Problème avec les paramètres date BDE/ODBC Oracle/XP Pro
    Par Bloon dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/10/2004, 10h09
  4. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00
  5. créer un noeuds avec des paramétres
    Par Toxine77 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/01/2003, 16h11

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