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 :

GUI : action utilisateur


Sujet :

Interfaces Graphiques

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Par défaut GUI : action utilisateur
    Bonjour

    j'effectue une interface graphique à l'aide de GUI.

    Mon problème est le suivant :
    j'affiche une courbe avec un paramètre donné (le nombre de points d'une transformée de Fourier).
    De plus, j'ai une liste déroulante de valeurs possibles de la TF.
    J'aimerais qu'à chaque fois que l'utilisateur modifie cette valeur, ma courbe se modifie en conséquence.

    J'ai effectué quelques recherches à ce propos, mais je n'ai rien trouvé de fructueux, donc une piste serait la bienvenue...

  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
    Il suffit (oui facile à dire, je sais) d'utiliser le Callback de l'objet listbox (ou popumenu peut-être, menu déroulant => il faudrait mieux mettre le nom du type donné dans MATLAB ).
    Cette fonction est appelée dès qu'il y a une modification dans la listbox.

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Par défaut
    pop-menu,oui.
    Ca marche, je vais essayer ça, merci

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Par défaut
    En fait, je ne suis pas sûr d'avoir compris

    Le calcul que je dois réeffectuer à chaque fois que je change mon paramètre variable (paramètre qui est modifiable via le pop-up menu), je le mets dans le Callback du pop-up menu?

  5. #5
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Oui c'est bien ca (ou alors tu appelles la fonction qui fait le calcul à partir du Callback).

    Et tu fais aussi la mise à jour de ton tracé dans ce Callback

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Par défaut
    Ok, merci, je pense que ça va fonctionner

    J'en profite d'être là, j'ai un petit soucis, rien à voir : j'ai défini mon paramètre variable, ainsi que quelques autre paramètres, en variable globale.

    Cependant, quand je demande la valeur de ces paramètres dans une fonction autre de celle ou ils ont été définis, matlab me renvoie une matrice vide... une idée?

  7. #7
    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
    Citation Envoyé par El_bennito Voir le message
    une idée?
    Ne pas utiliser les variables globales
    Voir : Développement efficace des interfaces graphiques (GUI) pour d'autres solutions.

  8. #8
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Par défaut
    oui, j'avais vu cette solution, mais je n'y ai pas compris grand chose en fait..

  9. #9
    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
    Comme je suppose que tu as utilisé GUIDE, le mieux dans ton cas serait de te servir de GUIHANDLES/GUIDATA.

    C'est relativement simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    %on est dans la sous-fonctions A
    function A(...)
    handles = guidata(gcbf);%recup de la structure handles à jour
    handles.valA=3;%creation d'un nouveau champ dans handles pour stocker une variable valA qui vaut 3
     
     
    %sous fonction B nécessite valA
    function B(...)
    handles = guidata(gcbf);%recup de la structure handles à jour
    disp(handles.valA);%affichage de la valeur de valA

  10. #10
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Par défaut
    ah oui, en effet, ça a l'air tout con en fait !

    je vous remercie, je vais tenter ça demain!

    au revoir, et merci encore

  11. #11
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Par défaut
    en fait, c'est moi qui doit l'être en fait, j'ai essayer avec le guidata et le handles, mais ça me met un message d'erreur, si quelqu'un pouvait m'aiguiller et me dire où sont mes erreurs :

    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    function varargout = interfinale2(varargin)
    % INTERFINALE2 M-file for interfinale2.fig
    %      INTERFINALE2, by itself, creates a new INTERFINALE2 or raises the existing
    %      singleton*.
    %
    %      H = INTERFINALE2 returns the handle to a new INTERFINALE2 or the handle to
    %      the existing singleton*.
    %
    %      INTERFINALE2('CALLBACK',hObject,eventData,handles,...) calls the local
    %      function named CALLBACK in INTERFINALE2.M with the given input arguments.
    %
    %      INTERFINALE2('Property','Value',...) creates a new INTERFINALE2 or raises the
    %      existing singleton*.  Starting from the left, property value pairs are
    %      applied to the GUI before interfinale2_OpeningFcn gets called.  An
    %      unrecognized property name or invalid value makes property application
    %      stop.  All inputs are passed to interfinale2_OpeningFcn via varargin.
    %
    %      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
    %      instance to run (singleton)".
    %
    % See also: GUIDE, GUIDATA, GUIHANDLES
     
    % Edit the above text to modify the response to help interfinale2
     
    % Last Modified by GUIDE v2.5 22-Jun-2009 15:56:29
     
    % Begin initialization code - DO NOT EDIT
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @interfinale2_OpeningFcn, ...
                       'gui_OutputFcn',  @interfinale2_OutputFcn, ...
                       'gui_LayoutFcn',  [] , ...
                       'gui_Callback',   []);
    if nargin && ischar(varargin{1})
        gui_State.gui_Callback = str2func(varargin{1});
    end
     
    if nargout
        [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
    else
        gui_mainfcn(gui_State, varargin{:});
    end
    % End initialization code - DO NOT EDIT
     
     
    % --- Executes just before interfinale2 is made visible.
    function interfinale2_OpeningFcn(hObject, eventdata, handles, varargin)
    % This function has no output args, see OutputFcn.
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % varargin   command line arguments to interfinale2 (see VARARGIN)
     
    % Choose default command line output for interfinale2
    handles.output = hObject;
     
    % Update handles structure
    guidata(hObject, handles);
     
    % UIWAIT makes interfinale2 wait for user response (see UIRESUME)
    % uiwait(handles.figure1);
     
     
    % --- Outputs from this function are returned to the command line.
    function varargout = interfinale2_OutputFcn(hObject, eventdata, handles) 
    % varargout  cell array for returning output args (see VARARGOUT);
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    % Get default command line output from handles structure
    varargout{1} = handles.output;
     
     
    % --- Executes when figure1 is resized.
    function figure1_ResizeFcn(hObject, eventdata, handles)
    % hObject    handle to figure1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
     
    % --- Executes during object creation, after setting all properties.
    function axes1_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to axes1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
     
    temps = a(1:end,1)'; % Récupération de la base de temps, c'est le premier vecteur colonne de A
    x = a(1:end,2)';
    Te = (temps(length(temps)) - temps(1)) / length(temps); % Récupération des valeurs du signal, c'est la 2ème colonne de A
    f = 0:(N-1); % Base de fréquence
    plot (temps, x); % Affichage du signal en temporel
    xlabel('Temps');
    ylabel('Amplitude');
    title('Signal Doppler brut');
    set(gca,'Box','off')
    handles = guidata(gcbf);%recup de la structure handles à jour
    handles.x=x;
    handles.Te=Te;
    handles.temps=temps;
    handles.f=f;
    % Hint: place code in OpeningFcn to populate axes1
     
     
    % --- Executes on selection change in popupmenu1.
    function popupmenu1_Callback(hObject, eventdata, handles)
    % hObject    handle to popupmenu1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    %Initialisation des portions du signal à la première valeur
    %Ce calcul est utilisé ici car dès qu'il y a une modification du pop-menu,
    %le Caalback est appelé, on recalcule donc la TF pour le nouveau nombre de
    %points
    handles = guidata(gcbf);%recup de la structure handles à jour
    global N;
    N=512;
    str=get(hObject,'String');
    val=get(hObject,'Value');
     
    str=cellstr(str); 
    str=str{val};
    N = str;
    handles.N=N;
     
    %Calcul de la TF à chaque modification de N via le pop-up menu
    for u=1:(length(handles.temps)/handles.N)
        s{u}=x(1)
    end
     
    % Création de portion de signal de longueur N
    for i=1:(length(handles.temps)/handles.N)
        for j=2:N
            s{i} = [s{i} x{j}];
        end
    end
     
    % Calcul des TF de chaque portions de signal
    for k=1:(length(handles.temps)/handles.N)
            S{k} = fftshift(abs(fft(s{k},handles.N))/length(s{k}));  
    end
    handles.s=s;
    handles.S=S;
     
    % Hints: contents = get(hObject,'String') returns popupmenu1 contents as cell array
    %        contents{get(hObject,'Value')} returns selected item from popupmenu1
     
     
    % --- Executes during object creation, after setting all properties.
    function popupmenu1_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to popupmenu1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
     
    % Hint: popupmenu controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white');
    end
     
     
    % --------------------------------------------------------------------
    function Fichier_Callback(hObject, eventdata, handles)
    % hObject    handle to Fichier (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
     
    % --------------------------------------------------------------------
    function Ouvrir_Callback(hObject, eventdata, handles)
    % hObject    handle to Ouvrir (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
     
    % --- Executes during object creation, after setting all properties.
    function Ouvrir_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to Ouvrir (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
    clear all;
    handles = guidata(gcbf);%recup de la structure handles à jour
     
    [filename, pathname,] = uigetfile('*.txt', 'Choisir le fichier');
    name=[pathname filename];
    data=load(name);
    handles.data=data;
    a=data;
    %---------------------------------------------

  12. #12
    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
    Citation Envoyé par El_bennito Voir le message
    mais ça me met un message d'erreur
    Lequel ? Vue la longueur du code, on ne va pas s'amuser à le décortiquer donc si tu nous donne le message en entier (ligne + erreur), ce sera plus facile de t'aider.

  13. #13
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Par défaut
    désolé, voici l'erreur qui s'affiche :
    quand je compile, il me met le message suivant, j'ai effectué quelques recherches, et je ne vois pas d'où ça peut venir :

    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
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    	at com.mathworks.toolbox.matlab.guide.LayoutArea.pointsAreClose(LayoutArea.java:2225)
    	at com.mathworks.toolbox.matlab.guide.LayoutArea.isMouseUpPopupTrigger(LayoutArea.java:2293)
    	at com.mathworks.toolbox.matlab.guide.LayoutArea.mouseReleased(LayoutArea.java:2431)
    	at java.awt.Component.processMouseEvent(Unknown Source)
    	at java.awt.Component.processEvent(Unknown Source)
    	at java.awt.Container.processEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Window.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)
    Il me met également cette erreur lorsque je veux modifier la valeur de N via le pop-up menu :

    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
    ??? Reference to non-existent field 'temps'.
     
    Error in ==> interfinale2>popupmenu1_Callback at 126
    for u=1:(length(handles.temps)/handles.N)
     
    Error in ==> gui_mainfcn at 96
            feval(varargin{:});
     
    Error in ==> interfinale2 at 42
        gui_mainfcn(gui_State, varargin{:});
     
    Error in ==>
    @(hObject,eventdata)interfinale2('popupmenu1_Callback',hObject,eventdata,guidata(hObject))
     
     
    ??? Error while evaluating uicontrol Callback

    J'ai pourtant défini temps à partir de "handles.temps"..?

  14. #14
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Pour ta deuxième erreur, tu as oublié de sauvegarder la structure handles modifiée (dans laquelle tu as ajouté entre autres le champs temps).

    Rajoute à la fin de la fonction axes1_CreateFcn:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    guidata(hObject, handles);

  15. #15
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Par défaut
    Ca me met toujours la même erreur

  16. #16
    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
    Ce qui me parait bizarre avec ton code c'est que pour moi il devrait planter tout de suite ligne 89 :C'est quoi a ?
    Tes axes se sont vraiment affichés ?

    Sinon pour l'erreur java essaye juste de redémarrer MATLAB, en général ça disparait...

  17. #17
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Par défaut
    en fait, j'ai recommencé le tout dans un nouveau gui, mon code commenceait à être crade, j'ai réussi à résoudre ce problème d'erreur Java, mais à présent, j'ai un nouveau problème sur handles, voici mon code :

    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    % --- Executes on selection change in popupmenu1.
    function popupmenu1_Callback(hObject, eventdata, handles)
    % hObject    handle to popupmenu1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    handles = guidata(gcbf); %recup de la structure handles à jour
    %N=512; %Valeur par défaut de N
     
    %Récupération de la valeur de N du pop-menu
    str=get(hObject,'String');
    val=get(hObject,'Value');
     
    str=cellstr(str); 
    str=str{val};
    N = str; % N est de type char
    N = str2double(N); %conversion de N en type double
    f = 0:(N-1); % Base de fréquence
     
     
    %Calcul de la TF à chaque modification de N via le pop-menu
     
    temps = handles.temps;
    x = handles.x;
    duree = length (temps);
    nbsignaux = duree / N;
     
    for u=1:nbsignaux
        s{u}=x(1); % Initialisation des s{u}
    end
     
    % Création de portion de signal de longueur N
    for i=1:nbsignaux
        for j=2:N
            s{i} = [s{i} x(j)];
        end
    end
     
    % Calcul des TF de chaque portions de signal
    for k=1:(nbsignaux)
            S{k} = fftshift(abs(fft(s{k},N))/length(s{k}));  
    end
     
    handles.N=N;
    handles.f=f;
    handles.s=s;
    handles.S=S;
    handlespopupmenu = handles
    guidata(gcbf,handles); % sauvegarde de la structure handles
     
    % Hints: contents = get(hObject,'String') returns popupmenu1 contents as cell array
    %        contents{get(hObject,'Value')} returns selected item from popupmenu1
     
     
    % --- Executes during object creation, after setting all properties.
    function popupmenu1_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to popupmenu1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
     
    % Hint: popupmenu controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white');
    end
     
     
    % --------------------------------------------------------------------
    function Untitled_1_Callback(hObject, eventdata, handles)
    % hObject    handle to Untitled_1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
     
    % --------------------------------------------------------------------
    function Ouvrir_Callback(hObject, eventdata, handles)
    % hObject    handle to Ouvrir (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
     
    % --- Executes during object creation, after setting all properties.
    function Ouvrir_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to Ouvrir (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
    clear all;
    handles = guidata(gcbf);%recup de la structure handles à jour
    [filename, pathname,] = uigetfile('*.txt', 'Choisir le fichier');
    name=[pathname filename];
    data=load(name);
    handles.data=data;
    a=data;
    handles.a=a;
    guidata(gcbf,handles);%sauvarge la structure hanfdles
     
     
    % --- Executes during object creation, after setting all properties.
    function axes1_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to axes1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
     
    handles = guidata(gcbf); %recup de la structure handles mise à jour
    a = handles.a;
    temps = a(1:end,1)'; % Récupération de la base de temps, c'est le premier vecteur colonne de a
    x = a(1:end,2)'; % % Récupération des valeurs du signal, c'est la 2ème colonne de a
    Te = (temps(length(temps)) - temps(1)) / length(temps); % Période d'échantillonnage
    plot (temps, x); % Affichage du signal en temporel
    xlabel('Temps');
    ylabel('Amplitude');
    title('Signal Doppler brut');
    set(gca,'Box','off')
    handles.temps=temps;
    handles.x=x;
    handles.Te=Te;
    handlesaxe1 = handles
    guidata(gcbf,handles);%sauvarge la structure hanfdles
     
     
    % Hint: place code in OpeningFcn to populate axes1
     
     
    % --- Executes during object creation, after setting all properties.
    function axes2_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to axes2 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
     
    handles = guidata(gcbf); %recup de la structure handles mise à jour
    handlesaxe2 = handles

    Il n'a aucune erreur. J'ai affiché le contenu de handles dans les différentes fonction, voici :

    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
    handlesaxe2 = 
     
        data: [6109x2 double]
           a: [6109x2 double]
     
     
    handlesaxe1 = 
     
         data: [6109x2 double]
            a: [6109x2 double]
        temps: [1x6109 double]
            x: [1x6109 double]
           Te: 3.2763e-004
     
     
    handlespopupmenu = 
     
              data: [6109x2 double]
                 a: [6109x2 double]
             temps: [1x6109 double]
                 x: [1x6109 double]
                Te: 3.2763e-004
           figure1: 194.0131
        Untitled_1: 25.0219
        popupmenu1: 24.0267
             text1: 216.0092
             axes4: 211.0092
             axes3: 206.0092
             axes2: 201.0129
            Ouvrir: 26.0219
            output: 194.0131
                 N: 512
                 f: [1x512 double]
                 s: {1x11 cell}
                 S: {1x11 cell}
    Ce que je ne comprends pas, c'est pourquoi, dans la fonction axe2, on a seulement data et a, et pas toutes mes autres variables?

  18. #18
    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
    Citation Envoyé par El_bennito Voir le message
    Ce que je ne comprends pas, c'est pourquoi, dans la fonction axe2, on a seulement data et a, et pas toutes mes autres variables?
    Parce que les axes2 sont surement créés (on est là dans la CreateFcn) avant les axes1 et juste après Ouvrir (un bouton je suppose).

    En fait à l'ouverture de ta Figure toutes les CreateFcn sont appelées une par une dans un ordre déterminé par... euh...MATLAB (je n'utilise pas GUIDE donc je n'ai jamais étudié à fond le truc).

  19. #19
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Par défaut
    bah pourtant non, j'ai Ouvrir en premier (via Fichier/ouvrir), puis axe1, et après axe2...

    Une solution pour remédier à ça?

  20. #20
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    En général, on préfère initialiser les objets, propriétés, etc dans l'OpeningFcn de la figure plutôt que dans les CreateFcn des objets, ca permet justement de contrôler l'ordre...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Thread et Action Utilisateur
    Par dr23fr dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 19/11/2007, 16h46
  2. compteur dynamique sur action utilisateur
    Par Goldorak2 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/07/2007, 15h26
  3. Réponses: 4
    Dernier message: 28/08/2006, 03h23
  4. Réponses: 4
    Dernier message: 05/06/2006, 10h28
  5. Réponses: 3
    Dernier message: 19/01/2006, 19h58

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