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 :

Insérer une zone de texte et qui commande un slider


Sujet :

Interfaces Graphiques

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 21
    Points
    21
    Par défaut Insérer une zone de texte et qui commande un slider
    Bonjour,

    Dans mon programme, j'utilise des "sliders" pour modifier dynamiquement la valeurs d'une variable à l'aide de la souris. Maintenant, j'aimerai insérer une zone de texte à coter du slider pour entrer une valeurs aléatoire au clavier et qui va aller affecter cette valeurs au slider. Est-ce que c'est possible ?

    Voici le type de slider que j'utilise dans mon programme :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    function essai_test
    clc
    clear all
    close all
    %
    global val;
    global val_2;
    %
    sld = uicontrol('Style', 'slider',...
        'Min',1,'Max',100,'Value',100,...
        'Position', [40 300 100 20],...
        'SliderStep',[0.001 0.001],...
        'Callback', @slid);
     
    sld2 = uicontrol('Style', 'slider',...
        'Min',0.001,'Max',0.1,'Value',0.1,...
        'Position', [40 200 100 20],...
        'SliderStep',[0.001 0.001],...
        'Callback', @sld2);
    % 
    val = 4.5;
    val_2 = 0.1;
     
    // CODE PROGRAMME
     
    //FIN PROGRAMME
     
    end
    disp('FIN')
    %  
    function slid(source,event)
    global val;
    val=get(source,'Value')/20;
    Epsilon = val
    disp(val);
    % 
    function sld2(source,event)
    global val_2;
    val_2=get(source,'Value');
    tg_p = val_2
    disp(val_2);
    Cordialement TO.

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut Insérer une zone de texte et qui commande un slider
    Bonjour,

    Une approche ( il est plus simple d'utiliser guide) :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    function essai_test
    clc
    clear all
    close all
    %
    global val val_2 txt1 txt2 sld
     
    %
    fig_h=figure;
    sld = uicontrol(fig_h,'Style', 'slider',...
        'Min',1,'Max',100,'Value',100,...
        'Position', [40 300 100 20],...
        'SliderStep',[0.001 0.001],...
        'Callback', @slid);
     
    sld2 = uicontrol(fig_h,'Style', 'slider',...
        'Min',0.001,'Max',0.1,'Value',0.1,...
        'Position', [40 200 100 20],...
        'SliderStep',[0.001 0.001],...
        'Callback', @sld2);
     
    txt1 = uicontrol('Style','text',...
        'Position',[40 280 100 20],...
        'String','5');
     
    txt2 = uicontrol('Style','text',...
        'Position',[200 280 100 20],...
        'String','Valeur max du sld');
     
    aff = uicontrol(fig_h, 'Style','edit',...
        'Position',[200 300 100 20],...
        'CallBack',@callb,...
        'String','5');
    function [] = callb(H,E)
    global sld
    a = get(H,'string');
    disp(['Max sld is: ',a])
    set(sld,'Max',str2num(a))
     
    %
    val = 4.5;
    val_2 = 0.1;
     
    %CODE PROGRAMME
     
    %FIN PROGRAMME
     
    %end
    disp('FIN')
    %
    function slid(source,event)
    global val txt1 txt2
    val=get(source,'Value')/20;
    Epsilon = val
    disp(val);
    set(txt1,'string',val);
    %
    function sld2(source,event)
    global val_2;
    val_2=get(source,'Value');
    tg_p = val_2
    disp(val_2);

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 21
    Points
    21
    Par défaut
    Bonjour phryte ! merci de m'avoir répondu.

    Je vais essayer d'adapter ton programme par rapport au mien mais j'ai plusieurs questions :

    - à quoi sert cette instruction ? - pourquoi est-ce que tu déclare un troisième sld ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function [] = callb(H,E)
    global sld
    a = get(H,'string');
    disp(['Max sld is: ',a])
    set(sld,'Max',str2num(a))
    - Enfin, j'ai essayé de compiler ton programme mais quand je modifie la valeurs dans la zone de texte cela ne modifie pas la valeurs dans le slider, est-ce normal ?

    Cordialement TO.

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,

    fig_h=figure;

    Il est utile et "propre" de déclarer le nom d'une figure. Mais on peur s"en passezr.


    il n' y a pas de troisième sld;

    Pour mettre 2 dans le slider tu entres 40. Le programme teste les limites. :


    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    function essai_test
    clc
    clear all
    close all
    %
    global val val_2 txt1 txt2 sld
     
    %
    fig_h=figure;
    sld = uicontrol(fig_h,'Style', 'slider',...
        'Min',1,'Max',100,'Value',100,...
        'Position', [40 300 100 20],...
        'SliderStep',[0.001 0.001],...
        'Callback', @slid);
     
    sld2 = uicontrol(fig_h,'Style', 'slider',...
        'Min',0.001,'Max',0.1,'Value',0.1,...
        'Position', [40 200 100 20],...
        'SliderStep',[0.001 0.001],...
        'Callback', @sld2);
     
    txt1 = uicontrol('Style','text',...
        'Position',[40 280 100 20],...
        'String','5');
     
    txt2 = uicontrol('Style','text',...
        'Position',[200 280 100 20],...
        'String','Valeur du sld');
     
    aff = uicontrol(fig_h, 'Style','edit',...
        'Position',[200 300 100 20],...
        'CallBack',@callb,...
        'String','5');
    function [] = callb(H,E)
    global sld txt1
    a = get(H,'string');
    if str2num(a) >= 1 & str2num(a) <= 100
    disp(['Value sld is: ',a])
    set(sld,'Value',str2num(a));
    set(txt1,'string',num2str(str2num(a)/20));
    else
        disp('Valeur hors curseur')
    end
     
    %
    val = 4.5;
    val_2 = 0.1;
     
    %CODE PROGRAMME
     
    %FIN PROGRAMME
     
    %end
    disp('FIN')
    %
    function slid(source,event)
    global val txt1 txt2
    val=get(source,'Value')/20;
    Epsilon = val;
    disp(val);
    set(txt1,'string',val);
    %
    function sld2(source,event)
    global val_2;
    val_2=get(source,'Value');
    tg_p = val_2;
    disp(val_2);

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par phryte Voir le message

    Pour mettre 2 dans le slider tu entres 40. Le programme teste les limites. :
    Bonjour Phryte,

    Merci ! ça fonctionne mais pas totalement comme je le souhaitais. Cela provient de la manière dont j'ai conçu mes sliders...

    Normalement lorsque je dois rentrer la valeurs 2 dans la zone de texte, il me faut la valeurs 2 dans le slider.

    Du coup, j'ai remplacé cette ligne d'instruction (car il y'a un rapport de 20) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    set(txt1,'string',num2str(str2num(a)/20));
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    set(txt1,'string',num2str(str2num(a)));
    A partir de la, j'obtiens correctement la valeur 2 simultanément dans le slider et la zone de texte, cependant le slider est conçu de 1 à 100, donc en réalité il se positionne au point 2 et non pas à la valeurs 2.

    Cdt TO.

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,

    Alors enlève les divisions par 20

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par phryte Voir le message
    Bonjour,

    Alors enlève les divisions par 20
    Ne fonctionne pas, même si j'enlève la divison par 20.

    Par exemple :

    -A la valeur 2 je suis a 0.10495

    -A la valeur 5 je suis a 0.25

  8. #8
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Essaie :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    function essai_test
    clc
    clear all
    close all
    %
    global val val_2 txt1 txt2 sld
     
    %
    fig_h=figure;
    sld = uicontrol(fig_h,'Style', 'slider',...
        'Min',1,'Max',100,'Value',100,...
        'Position', [40 300 100 20],...
        'SliderStep',[0.001 0.001],...
        'Callback', @slid);
     
    sld2 = uicontrol(fig_h,'Style', 'slider',...
        'Min',0.001,'Max',0.1,'Value',0.1,...
        'Position', [40 200 100 20],...
        'SliderStep',[0.001 0.001],...
        'Callback', @sld2);
     
    txt1 = uicontrol('Style','text',...
        'Position',[40 280 100 20],...
        'String','5');
     
    txt2 = uicontrol('Style','text',...
        'Position',[200 280 100 20],...
        'String','Valeur du sld');
     
    aff = uicontrol(fig_h, 'Style','edit',...
        'Position',[200 300 100 20],...
        'CallBack',@callb,...
        'String','5');
    function [] = callb(H,E)
    global sld txt1
    a = get(H,'string');
    if str2num(a) >= 1 & str2num(a) <= 100
        disp(['Value sld is: ',a])
        set(sld,'Value',str2num(a));
        set(txt1,'string',num2str(str2num(a)));
    else
        disp('Valeur hors curseur')
    end
     
    %
    val = 4.5;
    val_2 = 0.1;
     
    %CODE PROGRAMME
     
    %FIN PROGRAMME
     
    %end
    disp('FIN')
    %
    function slid(source,event)
    global val txt1 txt2
    val=get(source,'Value');
    Epsilon = val;
    disp(val);
    set(txt1,'string',val);
    %
    function sld2(source,event)
    global val_2;
    val_2=get(source,'Value');
    tg_p = val_2;
    disp(val_2);

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 21
    Points
    21
    Par défaut
    Merci beaucoup ! ça marche.

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

Discussions similaires

  1. Insérer une zone de texte dans un fichier Word
    Par Franck.H dans le forum VB.NET
    Réponses: 0
    Dernier message: 09/02/2016, 11h51
  2. Une zone de texte qui marche, l'autre pas , pourquoi ?
    Par lap75 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 3
    Dernier message: 06/12/2007, 13h11
  3. Réponses: 2
    Dernier message: 26/04/2007, 11h52
  4. Réponses: 13
    Dernier message: 30/10/2006, 11h16
  5. Réponses: 5
    Dernier message: 23/08/2006, 19h42

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