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 :

variable valable dans tout le M-File?!?! (GUI)


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 62
    Par défaut variable valable dans tout le M-File?!?! (GUI)
    Bonjour

    je suis débutant dans l'utilisation du GUI et je ne sais pas comment faire pour déclarer une variable qui est valable dans toutes les fonctions et qui peut être modifié par chaque fonction (callback)

    J'ai utilisé une fonction du type
    handles.current_data=........; positionné dans le

    OpeningFcn(hObject, eventdata, handles, varargin)

    mais cela ne fonctionne pas !

    Est-ce que quelqu'un peut m'aider ?

    Merci

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

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Par défaut
    salut
    il faut bien faire attention à ce que toutes tes modifications de handles (i.e ta ligne de code n l'occurence) se trouvent AVANT cette ligne,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    guidata(hObject, handles);
    sinon elles ne seront pas enregistrées dans les données de la figure (c'est ce que sgnifie "update handles structure").

    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
    % --- Executes just before gmtStartup is made visible.
    function gmtStartup_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 gmtStartup (see VARARGIN)
    
    % Choose default command line output for gmtStartup
    handles.output = hObject;
    
    %ici
    handles.current_data=........; 
    
    % Update handles structure
    guidata(hObject, handles);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 62
    Par défaut
    j'ai fait ce que vous m'aviez dit mais cela ne fonctionne pas.

    Je travaille en fait sur un exemple simple.Voici mes lignes de 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
    function testcarreinverse2_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 testcarreinverse2 (see VARARGIN)
     
    % Choose default command line output for testcarreinverse2
    handles.output = hObject;
     
    X=[0:10]
    Y=X.^(-1)
    Z=X.^2
    handles.inverse=Y;
    handles.carre=Z;
    handles.current_data=handles.carre;
     
    % Update handles structure
    guidata(hObject, handles);
     
     
    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)
     
    % Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1 contents as cell array
    %        contents{get(hObject,'Value')} returns selected item from popupmenu1
     
    val=get(hObject,'Value');
    str=get(hObject,'String');
    switch str{val}
        case 'inverse'
            handles.current_data=handles.inverse;
            plot(X, handles.current_data,'*r');
        case 'carre'
            handles.current_data=handles.carre;
            plot(X, handles.current_data,'*r');
        otherwise
     
    end
     
    guidata(hObject, handles);

    le code dans le popupmenu1 ne prend pas en compte les variables définies dans le testcarreinverse2_OpeningFcn.Pour que cela fonctionne, il faut que je redéfinisse les variables dans le testcarreinverse2_OpeningFcn.

    Merci d'avance pour votre aide.

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

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Par défaut
    salut
    pas trop compris ton problème mais la variable X n'est pas définie dans le callback du popup. tu peux aussi laisser tomber l'"otherwise".

  5. #5
    Membre confirmé Avatar de Youni92
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 178
    Par défaut
    valable dans toutes les fonctions et qui peut être modifié par chaque fonction
    Je pense que dans ce cas, il faut que tu déclare tes variables en globale:
    Si je me trompe, réctifiez moi, je sais que vous n'aimez pas les variables globales.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 62
    Par défaut
    Ok

    Je n'avais en fait pas fait attention à déclarer la variable X dans le popup.
    J'ai donc déclaré non pas X mais handles.X et cela fonctionne.


    Merci.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 10/01/2012, 16h44
  2. Variable globale dans toute l'application
    Par RouRa22 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 09/02/2009, 18h10
  3. variable visible dans tout le classeur
    Par onejock dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/07/2008, 17h22
  4. Réponses: 5
    Dernier message: 03/10/2007, 18h18
  5. utilisation des variables global dans tout le projet
    Par EYENGA Joël dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/01/2006, 10h55

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