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 :

Utiliser la valeur d'un Slider dans une variable


Sujet :

Interfaces Graphiques

  1. #1
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 166
    Points : 56
    Points
    56
    Par défaut Utiliser la valeur d'un Slider dans une variable
    Bonjour,

    J'aimerais exporter du GUI la valeur d'un slider dans la variable M, car cette variable est utilisée dans le reste de mon code et dans d'autres fichier .m. Si je n'exporte pas cette variable dans le workspace, les fichiers .m qui utilisent la variable M ne fonctionnent donc pas pour l'instant.

    Voici mon code qui ne fonctionne pas du tout, je n'ai pas la variable M affichée dans le workspace :

    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
    % --- Executes on slider movement.
    function slider8_Callback(hObject, eventdata, handles)
    M = get(hObject,'Value');
    set(handles.text10,'String',num2str(M+1));
     
     
    function slider8_CreateFcn(hObject, eventdata, handles)
    if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor',[.9 .9 .9]);
    end
     
    function slider8_OpeningFcn(hObject, eventdata, handles)
    M = varargin{1};
     
    function varargout = slider8_OutputFcn(hObject, eventdata, handles)
    varargout{1} = sortie_M;
    [M] = slider8(M);
    Savez-vous comment faire ?

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

    De quelle façon utilises-tu cette interface par rapport à tes autres fonctions ?

    slider8 étant un objet Uicontrol Slider, il ne devrait normalement pas comporter les fonctions OpeningFcn et OutputFcn... Aurais-tu nommé ton slider du même nom que ton .m ?

    Je te conseille la lecture de ce tutoriel.

  3. #3
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 166
    Points : 56
    Points
    56
    Par défaut
    J'exécute un GUI qui comporte d'autres sliders en plus de celui-ci, le script ne s'appelle pas du tout slider8.m (pour répondre à ta question) et contient dans le code l'appel à des scripts.m qui font appel aux valeurs des sliders.

    Donc en gros j'aimerais (aussi avec mes autres sliders) pouvoir stocker dans le workspace les valeurs de tout ces sliders, pour que le lancement d'autres scripts.m puissent les utiliser.

    Genre : je lance le gui, je choisis les paramètres a, b, c de 3 sliders différents et ensuite je valide avec un bouton de test, et ça m'exécute un algo qui est dans un autre fichier .m et qui prend en compte les 3 valeurs a, b et c.

    Si ça ne convient pas, je souhaite pouvoir changer les valeurs a, b et c (sans avoir à fermer le gui) et relancer avec le bouton de test.

    J'ai tout qui fonctionne sauf que ces valeurs que je n'arrive pas à rentrer dans des variables.

    J'ai déjà maté le lien que tu m'as mis, mais j'ai vraiment du mal.

    Si tu as capté ce que je voulais, je veux bien de l'aide car je suis sur le point de finaliser mon programme, il ne me manque que ça.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Il suffit dans la fonction Callback de ton bouton de récupérer les différentes valeurs des sliders, puis de les passer en paramètre à ta fonction externe qui exécute l'algorithme.

  5. #5
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 166
    Points : 56
    Points
    56
    Par défaut
    Bhen justement, je pensais pouvoir le faire via varargout mais ça ne semble pas fonctionner.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function tonBouton_Callback(hObject, eventData, handles)
     
    valeurSlider = get( handles.tonSlider, 'Value');
    traitement(valeurSlider)

  7. #7
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 166
    Points : 56
    Points
    56
    Par défaut
    ok pour handles, j'avais mis object...

    J'essaie prochainement. merci

  8. #8
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 166
    Points : 56
    Points
    56
    Par défaut
    Ya bon ! je n avais pas capté qu'l fallait mettre l'appel de la valeur dans la fonction du bouton.

    Ca fonctionne, c'est parfait.

    Merci.

  9. #9
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 166
    Points : 56
    Points
    56
    Par défaut
    salut,

    re reprends le fil de cette discussion que j'avais indiqué comme résolue, mais j'ai un soucis sur mon slider.

    j'ai n'arrive pas à donner une valeur initiale à ce slider. Certes il est au départ dans le GUI positionné sur la valeur la plus basse, mais j'ai l'impression qu'il faut faire bouger le slider pour indiquer au programme quelle en est la valeur.
    Du coup, ca plante.

    Savez-vous dans quel champ il faut renseigner la valeur initiale du slider et pouvoir la récupérer ensuite dans un programme.m ?

    merci

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

    Que ce soit à l'initialisation ou pendant l'exécution, c'est la propriété 'Value' qui sert à fixer sa valeur.
    Si tu souhaites lui donner une valeur dynamique à l'initialisation, tu peux te servir du callback 'CreateFcn', et fixer sa valeur dedans.

  11. #11
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 166
    Points : 56
    Points
    56
    Par défaut
    Quand je clique sur un "button", je récupère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    M = get(handles.slider8, 'Value');
    Donc dans mon slider8_createfcn, je dois ajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setappdata(1,'M',value)
    ?

  12. #12
    Invité
    Invité(e)
    Par défaut
    Il n'y a aucun lien entre les deux lignes que tu présentes.
    Qu'entends-tu exactement faire ici ?

  13. #13
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 166
    Points : 56
    Points
    56
    Par défaut
    Voici une partie du code , je voudrais quand je clique sur le button 2 je puisse récupérer la valeur du slider (ce que je peux faire quand je bouge le slider), mais qui ne renvoie rien si je ne touche pas le slider.
    J'aimerais pouvoir imputer une valeur au slider par défaut.

    Il me faut apparemment mettre une valeur dans slider8_creatfcn, mais je ne sais pas sous quelle forme. je pensais mettre ceci : setappdata(1,'M',value),
    ou setappdata(handles.slider8,'M',1);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function pushbutton2_Callback(hObject, eventdata, handles)
    ...................................
    .............................
    M = get(handles.slider8, 'Value');
    end
     
    function slider8_Callback(hObject, eventdata, handles)
    M = get(hObject,'Value');
    set(handles.text10,'String',num2str(round(M+1)));
     
    function slider8_CreateFcn(hObject, eventdata, handles)
    if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor',[.9 .9 .9]);
    end

  14. #14
    Invité
    Invité(e)
    Par défaut
    La fonction setappdata ne sert pas à modifier les propriétés dans objets, mais à stocker des variables (que l'on récupères avec getappdata)
    On utilise exclusivement la fonction set pour cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function slider8_CreateFcn(hObject, eventdata, handles)
     
    set(hObject, 'Value', ta_valeur_par_defaut)
    Attention à ne pas utiliser handles dans les fonctions CreateFcn, celle-ci est vide lors de la création des objets.

  15. #15
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 166
    Points : 56
    Points
    56
    Par défaut
    Faut-il mettre la fonction : CreatFcn en premier dans le sens de lecture du programme ou cela n'a pas d'importance ?

  16. #16
    Invité
    Invité(e)
    Par défaut
    Aucune importance, cela reste une fonction comme une autre.

  17. #17
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 166
    Points : 56
    Points
    56
    Par défaut
    Lorsqu'on appelle un autre programme.m depuis le programme principal.m, faut-il nécessairement demander dans programme.m la valeur définie dans le slider ou on peut directement effectuer des opérations ?

  18. #18
    Invité
    Invité(e)
    Par défaut
    Si tu as besoin de connaître cette valeur pour effectuer tes opérations, évidemment que oui.

  19. #19
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 166
    Points : 56
    Points
    56
    Par défaut
    c'est pas forcément évident car les valeurs sont stockées dans des variables, je ne pensais pas qu'il faille demander la valeur du slider pour effectuer des opérations dans les programmes annexes.m

  20. #20
    Invité
    Invité(e)
    Par défaut
    Je fais avec le peu que tu me dis
    Si tu stockes ces valeurs du slider dans une variable et que tu passes cette variable, ça va aussi... le tout est de connaître sa valeur, peu importe le moyen.

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/05/2012, 22h41
  2. [formulaire] Récuperer la valeur d'un select dans une variable
    Par Despec dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 03/11/2006, 15h45
  3. Affecter valeur d'un champ dans une variable
    Par Sly2k dans le forum Access
    Réponses: 3
    Dernier message: 17/08/2006, 09h43
  4. utiliser le resultat d'un SUM dans une variable
    Par Qapoka dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 16/05/2006, 15h47
  5. Utiliser la valeur d'un input dans une variable php
    Par megane dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/08/2005, 16h02

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