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 :

Rendre un bouton invisible grâce à un autre bouton


Sujet :

Interfaces Graphiques

  1. #1
    Membre à l'essai
    Femme Profil pro
    Doctorante
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Points : 19
    Points
    19
    Par défaut Rendre un bouton invisible grâce à un autre bouton
    Bonjour à tous,

    Je dois réaliser un programme pour une expérience, et pour ne pas que les participants ne soient perturbés par un bouton dont ils ne doivent pas se servir, je voudrais le faire disparaître à l'aide d'un deuxième bouton. Si je ne le fais pas disparaître grâce à "set visible", c'est que je ne sais pas combien de fois il faudra cliquer dessus avant que je n'en ai plus besoin (c'est un bouton de réglage).

    Je débute sous matlab, et j'ai essayé de programmer l'interface toute seule plutôt qu'en passant par le GUIDE. Je vous joins le code de l'interface : interface_bruit1.m

    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
    function interface_bruit1
     
    f = figure('Visible','off','Position',[360,150,900,560], 'Color', [0.8,0.8,1],'Menubar', 'none', 'Toolbar', 'none');
     
    BoutonCalibrationOn   = uicontrol('Style','pushbutton',...
                           'String','Calibration On','Position',[10,475,150,50],...
                           'Fontsize', 15,...
                           'Userdata',4,...
                           'BackgroundColor',[1 1 1],...
                           'ForegroundColor',[0.2,0,0.4],...
                           'Callback',{@BoutonCalibration_Callback});
     
    BoutonCalibrationOff   = uicontrol('Style','pushbutton',...
                           'String','Calibration Off','Position',[170,475,150,50],...
                           'Fontsize', 15,...
                           'Userdata',5,...
                           'BackgroundColor',[1 1 1],...
                           'ForegroundColor',[0.2,0,0.4],...
                           'Callback',{@BoutonCalibrationOff_Callback});
     
     
    set(f,'Name','Bruit1')
     
    movegui(f,'center')
     
    set(f,'Visible','on')
     
     
    function BoutonCalibration_Callback(hObject, eventdata, handles)
    bruit1('calibrationon')
     
    function BoutonCalibrationOff_Callback(hObject, eventdata, handles)
    bruit1('calibrationoff')
    Ce que j'aimerais, c'est qu'en cliquant sur le bouton "BoutonCalibrationOff", je fasse disparaître les boutons "BoutonCalibrationOn" et "BoutonCalibrationOff".
    J'ai essayé différentes choses, au mieux, je ne fais disparaître que calibration off, au pire, je reçois tout un tas de messages d'erreurs, je ne sais plus quoi faire...

    Je vous mets le bout de code de mon programme bruit1.m. Ici, calibration off disparaît, calibration On ne disparaît pas, mais pas de message d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    case 'calibrationon';
             Bcal= 0.999 * (2 * rand(6*F_echan, 1) - 1); 
            Bcal = filter(b1,b2,Bcal);
            B_calib = audioplayer(Bcal, F_echan); 
            playblocking(B_calib); 
     
        case 'calibrationoff';
            set(findobj('Userdata','4'),'Visible','off');
            set (gcbo,'Visible','off');
    Merci d'avance,

    Meloody

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

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    je pense que c'est parce que tu changes de fichier
    tu peux essayer de débugger en regardant ce que donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    findobj('Userdata','4')
    au moment où tu l'utilises
    peut-être essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    function BoutonCalibrationOff_Callback(hObject, eventdata, handles)
    bruit1('calibrationoff',findobj('Userdata','4'))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function bruit1(opt,calibrationOn)
    %...
    switch opt
      case 'calibrationoff';
            set(calibrationOn,'Visible','off');
            set (gcbo,'Visible','off');

  3. #3
    Membre à l'essai
    Femme Profil pro
    Doctorante
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Bonjour tubaas,

    merci de ta réponde rapide et de ton aide.
    J'ai passé findobj('Userdata','4') en paramètre de ma fonction calibration_off,il n'y a pas de message d'erreur, mais le bouton calibration on ne disparaît toujours pas.
    En ce qui concerne 'Userdata' à 4, il n'y a qu'un seul bouton qui a cette caractéristique, mais je ne suis pas sûre qu'il récupère réellement le bouton...
    Encore merci, en tous cas..

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

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    et ?

  5. #5
    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
    Tout ça me parait un peu compliqué et je n'ai pas très bien compris ce que tu cherches à faire

    Sinon je ferais plutôt ainsi :
    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
    function interface_bruit1
     
    f = figure('Visible','off','Position',[360,150,900,560], 'Color', [0.8,0.8,1],'Menubar', 'none', 'Toolbar', 'none');
     
    BoutonCalibrationOn   = uicontrol('Style','pushbutton',...
                           'String','Calibration On','Position',[10,475,150,50],...
                           'Fontsize', 15,...
                           'Userdata',4,...
                           'BackgroundColor',[1 1 1],...
                           'ForegroundColor',[0.2,0,0.4],...
                           'Callback',{@BoutonCalibration_Callback});
     
    BoutonCalibrationOff   = uicontrol('Style','pushbutton',...
                           'String','Calibration Off','Position',[170,475,150,50],...
                           'Fontsize', 15,...
                           'Userdata',5,...
                           'BackgroundColor',[1 1 1],...
                           'ForegroundColor',[0.2,0,0.4],...
                           'Callback',{@BoutonCalibrationOff_Callback});
     
     
    set(f,'Name','Bruit1')
     
    movegui(f,'center')
     
    set(f,'Visible','on')
     
     
    function BoutonCalibration_Callback(hObject, eventdata, handles)
    %bruit1('calibrationon')
    bruit1('calibrationon',gcbo,findobj(gcbf,'UserData',5));
     
    function BoutonCalibrationOff_Callback(hObject, eventdata, handles)
    %bruit1('calibrationoff')
    bruit1('calibrationoff',findobj(gcbf,'UserData',4),gcbo);
    Ou plus simple avec les fonctions imbriquées (nested functions) :
    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
    function interface_bruit1
     
    f = figure('Visible','off','Position',[360,150,900,560], 'Color', [0.8,0.8,1],'Menubar', 'none', 'Toolbar', 'none');
     
    BoutonCalibrationOn   = uicontrol('Style','pushbutton',...
                           'String','Calibration On','Position',[10,475,150,50],...
                           'Fontsize', 15,...
                           'Userdata',4,...
                           'BackgroundColor',[1 1 1],...
                           'ForegroundColor',[0.2,0,0.4],...
                           'Callback',{@BoutonCalibration_Callback});
     
    BoutonCalibrationOff   = uicontrol('Style','pushbutton',...
                           'String','Calibration Off','Position',[170,475,150,50],...
                           'Fontsize', 15,...
                           'Userdata',5,...
                           'BackgroundColor',[1 1 1],...
                           'ForegroundColor',[0.2,0,0.4],...
                           'Callback',{@BoutonCalibrationOff_Callback});
     
     
    set(f,'Name','Bruit1')
     
    movegui(f,'center')
     
    set(f,'Visible','on')
     
     
    	function BoutonCalibration_Callback(hObject, eventdata, handles)
    	%bruit1('calibrationon')
    	bruit1('calibrationon',BoutonCalibrationOn,BoutonCalibrationOff);
    	end
     
    	function BoutonCalibrationOff_Callback(hObject, eventdata, handles)
    	%bruit1('calibrationoff')
    	bruit1('calibrationoff',BoutonCalibrationOn,BoutonCalibrationOff);
    	end
    end
    Dans les deux cas, bruit1 aura comme entête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function bruit1(cas,bouonOn,boutonOff)
    Tu as maintenant les handles de tes 2 boutons dans ta fonction bruit1.
    Règles du Forum

    Adepte de la maïeutique

  6. #6
    Membre à l'essai
    Femme Profil pro
    Doctorante
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Merci de vos réponses.

    En fait, je cherche à faire en sorte que lorsque l'on clique sur le bouton 'BoutonCalibrationOff', les boutons 'BoutonCalibrationOn' et 'BoutonCalibrationOff' ne soient plus visibles.

    J'ai remplacé les callback de mon fichier Interface_bruit1.m par ceux que tu as écrits Caro-Line.

    Dans bruit1.m, j'ai mis BoutonCalibrationOn et BoutonCalibrationOff en paramètres.

    Mon code est devenu ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function bruit1(action,varargin,BoutonCalibrationOn,BoutonCalibrationOff);
     
        case 'calibrationon';
            Bcal= 0.999 * (2 * rand(6*F_echan, 1) - 1);
            Bcal = filter(b1,b2,Bcal);
            B_calib = audioplayer(Bcal, F_echan); 
            playblocking(B_calib); 
     
        case 'calibrationoff';
            set(BoutonCalibrationOn,'Visible','off');
            set (gcbo,'Visible','off');
    Le bouton Calibration Off disparaît, mais le bouton Calibration On, toujours pas...

    En tous cas, merci de votre aide et de votre patience..

    Meloody

  7. #7
    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
    Et c'est quoi ce varargin qui traine au milieu ???

    As-tu regardé l'aide de GCBO pour voir ce que c'est ?

    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        case 'calibrationoff';
            set(BoutonCalibrationOn,'Visible','off');
            set (BoutonCalibrationOff,'Visible','off');

    Et pourquoi as-tu externalisé cette fonction avec 2 case (il manque le SWITCH au passage) ?
    Pourquoi ne pas mettre chaque morceau de code dans le callback ?

    Tu te sers de cette fonction ailleurs ?
    Règles du Forum

    Adepte de la maïeutique

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

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    il accepte ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function bruit1(action,varargin,BoutonCalibrationOn,BoutonCalibrationOff);
    je le mettrai plutôt à la fin

  9. #9
    Membre à l'essai
    Femme Profil pro
    Doctorante
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Varargin est là pour la suite de la fonction, je n'ai mis ici que le petit bout de code qui concerne la calibration, donc mes deux boutons.
    D'après ce que j'ai lu, gcbo renvoie le handle de 'lobjet dont le callback est exécuté, je suppose que c'est pour ça que mon bouton disparaît quand je clique dessus, puisque c'est bien sa fonction que l'on appelle.

    Si je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    case 'calibrationoff';
            set(BoutonCalibrationOn,'Visible','off');
            set (BoutonCalibrationOff,'Visible','off');
    J'ai un message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ??? Input argument 'BoutonCalibrationOff' is undefined.
     
    Error in ==> C:\MATLAB6p5\work\Autisme\Bruit1\bruit1.m
    On line 41  ==>         set (BoutonCalibrationOff,'Visible','off');
     
    Error in ==> C:\MATLAB6p5\work\Autisme\Bruit1\interface_bruit1.m (BoutonCalibrationOff_Callback)
    On line 97  ==> bruit1('calibrationoff',findobj(gcbf,'UserData',4),gcbo);
     
    ??? Error while evaluating uicontrol Callback.
    Le switch est présent, mais plus haut dans mon programme.

    Par contre, en ce qui concerne le fait de mettre le bout de fonction dans le callback, j'ai essayé ça dans Interface_bruit1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function BoutonCalibration_Callback(hObject, eventdata, handles)
    %bruit1('calibrationon')
    bruit1('calibrationon');
     
    function BoutonCalibrationOff_Callback(hObject, eventdata, handles)
    %bruit1('calibrationoff')
    set(BoutonCalibrationOn,'Visible','off');
    bruit1('calibrationoff');
    et ça dans bruit1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     case 'calibrationon';
            % amplitude maximale. On aura ensuite une atténuation pour que
            % chaque stimulus soit à 67 dB SPL
            Bcal= 0.999 * (2 * rand(6*F_echan, 1) - 1); % 6 secondes de bruit
            % filtrage
            Bcal = filter(b1,b2,Bcal);
            B_calib = audioplayer(Bcal, F_echan); 
            playblocking(B_calib); % joue le son et attend sa fin avant de rendre la main
     
     
        case 'calibrationoff';
            set (gcbo,'Visible','off');
    mais j'ai un message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ??? Undefined function or variable 'BoutonCalibrationOn'.
     
    Error in ==> C:\MATLAB6p5\work\Autisme\Bruit1\interface_bruit1.m (BoutonCalibrationOff_Callback)
    On line 97  ==> set(BoutonCalibrationOn,'Visible','off');
     
    ??? Error while evaluating uicontrol Callback.
    Vraiment merci pour ton intérêt et ta patience, je galère vraiment!

  10. #10
    Membre à l'essai
    Femme Profil pro
    Doctorante
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Pour VOTRE intérêt et VOTRE patience, d'ailleurs

  11. #11
    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
    Mais euh!!!
    Faut pas mélanger toutes les solutions....
    Tu es revenue au cas où bruit1 ne reçoit qu'un seul argument....

    Il faut pour interface => prendre une des solutions que j'ai présentées.
    Pour bruit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function bruit1(cas,boutonOn,boutonOff,varargin)
    %...
        case 'calibrationoff';
            set(boutonOn,'Visible','off');
            set (boutonOff,'Visible','off');
    Mais bon ce qui est gênant c'est que tu n'as pas bien saisi le pourquoi du comment alors comment t'expliquer ?

    Tu ne peux utiliser que des variables connues dans l'environnement de ta fonction.
    Dans le cas au-dessus pas exemple j'ai passé la variable boutonOn en paramètre donc je peux l'utiliser.

    Pour VARARGIN : il doit être placé à la fin.
    Tu dis que tu en as besoin mais es-tu sure de savoir vraiment l'utiliser ?
    Règles du Forum

    Adepte de la maïeutique

  12. #12
    Membre à l'essai
    Femme Profil pro
    Doctorante
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Alors ça y est, ça marche avec dans Interface_bruit1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function BoutonCalibration_Callback(hObject, eventdata, handles)
    %bruit1('calibrationon')
    bruit1('calibrationon');
     
    function BoutonCalibrationOff_Callback(hObject, eventdata, handles)
    %bruit1('calibrationoff')
    set(findobj(gcbf,'UserData',4),'Visible','off');
    bruit1('calibrationoff');
    et dans bruit1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     case 'calibrationon';
            % amplitude maximale. On aura ensuite une atténuation pour que
            % chaque stimulus soit à 67 dB SPL
            Bcal= 0.999 * (2 * rand(6*F_echan, 1) - 1); % 6 secondes de bruit
            % filtrage
            Bcal = filter(b1,b2,Bcal);
            B_calib = audioplayer(Bcal, F_echan); 
            playblocking(B_calib); % joue le son et attend sa fin avant de rendre la main
     
     
        case 'calibrationoff';
            set (gcbo,'Visible','off');
    mais je ne comprends toujours pas pourquoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     case 'calibrationoff';
            set (gcbo,'Visible','off');
    renvoie un message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ?? Input argument 'BoutonCalibrationOff' is undefined.
     
    Error in ==> C:\MATLAB6p5\work\Autisme\Bruit1\bruit1.m
    On line 40  ==>         set (BoutonCalibrationOff,'Visible','off');
     
    Error in ==> C:\MATLAB6p5\work\Autisme\Bruit1\interface_bruit1.m (BoutonCalibrationOff_Callback)
    On line 98  ==> bruit1('calibrationoff');
     
    ??? Error while evaluating uicontrol Callback.
    alors que BoutonCalibrationOff est en paramètre dans ma fonction de départ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function bruit1(action,BoutonCalibrationOn,BoutonCalibrationOff,varargin);
    (j'ai mis varargin à la fin, je ne crois pas que ca ait changé grand chose ^^)

    Vraiment merci de votre aide et de votre présence

  13. #13
    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
    Oui mais dans interface, tu n'as pas passé de paramètres à bruit1 donc ça sert à rien.

    Enfin sinon le plus simple c'est de tout faire dans interface....
    Avec les nested :
    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
    function interface_bruit1
     
    f = figure('Visible','off','Position',[360,150,900,560], 'Color', [0.8,0.8,1],'Menubar', 'none', 'Toolbar', 'none');
     
    BoutonCalibrationOn   = uicontrol('Style','pushbutton',...
                           'String','Calibration On','Position',[10,475,150,50],...
                           'Fontsize', 15,...
                           'Userdata',4,...
                           'BackgroundColor',[1 1 1],...
                           'ForegroundColor',[0.2,0,0.4],...
                           'Callback',{@BoutonCalibration_Callback});
     
    BoutonCalibrationOff   = uicontrol('Style','pushbutton',...
                           'String','Calibration Off','Position',[170,475,150,50],...
                           'Fontsize', 15,...
                           'Userdata',5,...
                           'BackgroundColor',[1 1 1],...
                           'ForegroundColor',[0.2,0,0.4],...
                           'Callback',{@BoutonCalibrationOff_Callback});
     
     
    set(f,'Name','Bruit1')
     
    movegui(f,'center')
     
    set(f,'Visible','on')
     
     
    	function BoutonCalibration_Callback(hObject, eventdata, handles)
    	bruit1('calibrationon')
    	end
     
    	function BoutonCalibrationOff_Callback(hObject, eventdata, handles)
    	%bruit1('calibrationoff')
    	set([BoutonCalibrationOn,BoutonCalibrationOff],'Visible','off');
    	end
    end
    Et bruit1 redevient (on n'a plus besoin des handles des boutons) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function bruit1(action,varargin)
    %...
    case 'calibrationon';
            % amplitude maximale. On aura ensuite une atténuation pour que
            % chaque stimulus soit à 67 dB SPL
            Bcal= 0.999 * (2 * rand(6*F_echan, 1) - 1); % 6 secondes de bruit
            % filtrage
            Bcal = filter(b1,b2,Bcal);
            B_calib = audioplayer(Bcal, F_echan); 
            playblocking(B_calib); % joue le son et attend sa fin avant de rendre la main
    Et il n'y a plus le case 'calibrationoff' ...
    Règles du Forum

    Adepte de la maïeutique

  14. #14
    Membre à l'essai
    Femme Profil pro
    Doctorante
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Effectivement, je viens de me rendre compte que j'avais une erreur de cop/coll, et que j'avais perdu des paramètres

    En remettant tous les arguments à bruit1, je n'ai plus d'erreur, ça marche nickel

    En plus je crois même que j'ai compris!

    Merci votre aide précieuse et de votre patience, vous m'avez vraiment éclairée.

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

Discussions similaires

  1. Utiliser un bouton grâce à un autre bouton?
    Par Anakinyo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/08/2014, 09h42
  2. [XL-2010] Bouton qui exécute d'autres boutons macros
    Par CDGESTION dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 13/06/2013, 16h57
  3. Bouton qui renvoie à d'autres boutons..
    Par Chipsus dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/04/2010, 14h09
  4. Bouton qui affecte d'autres boutons
    Par pennylanesworld dans le forum Flash
    Réponses: 1
    Dernier message: 05/11/2006, 07h07
  5. Simuler le bouton réinitialiser via un autre bouton ?
    Par beegees dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 28/02/2006, 10h49

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