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 et variables globales


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Par défaut GUI et variables globales
    Bonjour,

    J'ai un petit soucis avec mes interfaces en utilisant Matlab.
    J'ai une interface principale qui contient un pushbutton. Quand on appuie dessus j'ouvre une nouvelle fenetre. Mais je n'arrive pas à recuperer l'information resultante des actions dans cette dernière fenetre dans ma 1ere fenetre...

    Si j'ai une fonction qui gere ma 1ere fenetre:
    function fenetre1;

    Et que j'ai une fonction qui gere ma 2eme fenetre et qui est appelé quand j'appuie sur un bouton de la 1ere fenetre:

    function var = fenetre1 (var);

    J'utilise des variables globales dans ces 2 fonctions mais comment je recupere la valeur de var dans ma 1ere fenetre?

    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
    si tu regardes ce tutoriel tu verras que tu peux utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setappdata(0,name,value)
    pour faire communiquer deux figures

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Par défaut
    Alors j'ai essayé mais je n'obtiens pas ce que je veux. J'essaye d'expliquer ce que je fais:

    J'ai deux scripts (un pour l'interface et un qui fait des opérations avec les données (ptr) résultantes de cette interface):

    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 gui (I)
        global fig 
        pNEXT = uicontrol('style','pushbutton',...
            'callback',@next_Callback);    
        function next_Callback(hObject, eventdata, handles)
          global fig 
          imshow(I);
          [xi,yi] = ginput(N);
          points = zeros(N,2);
              for i=1:N 
                  points(i,1)=xi(i);
                  points(i,2)=yi(i);
              end
          setappdata(fig,'ptr',points);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function scriptToGetValue ()
    global fig
    gui(I);
    ptr = getappdata(fig,'ptr');
    Citation Envoyé par MATLAB
    Mais j'ai ce message d'erreur:
    ??? Attempted to access ptr(1,1); index out of bounds because size(ptr)=[0,0].
    Vous pourriez me dire ce que je fais de faux?
    Merci!

  4. #4
    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
    Bonjour,

    Il faut que tu spécifies dans ton programme que celui-ci doit attendre que tu aies appuyé sur ton bouton pour continuer, tu peux le faire comme ca:
    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
    function gui (I)
    
        global fig 
        pNEXT = uicontrol('style','pushbutton',...
            'callback',@next_Callback);  
        uiwait(fig);
    
        function next_Callback(hObject, eventdata, handles)
          global fig 
          imshow(I);
          [xi,yi] = ginput(N);
          points = zeros(N,2);
              for i=1:N 
                  points(i,1)=xi(i);
                  points(i,2)=yi(i);
              end
          setappdata(fig,'ptr',points);
          uiresume(fig);
    Bonne journée,
    Duf

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Par défaut
    Ah oki cool! Merci beaucoup!
    Et juste une autre petite question encore... On peut appeler une fonction callback dans une autre?

    Par exemple:

    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
    function gui
     
       global fig 
     
       pNEXT = uicontrol('style','pushbutton',...
            'callback',@next_Callback);  
     
       pREDO = uicontrol('style','pushbutton',...
            'callback',@redo_Callback);  
     
       function next_Callback(hObject, eventdata, handles)
          ....
     
       function redo_Callback(hObject, eventdata, handles)
           ... 
           next_Callback(hObject, eventdata, handles);
    -> on ne peut pas faire comme ca ici Il y a une solution à ca?

    Merci

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Par défaut
    En fait je peux faire appel à next_Callback dans les 2 cas et vérifier si le bouton s'appelle NEXT ou REDO :-)

Discussions similaires

  1. variable global sur GUI
    Par nemsz dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 20/04/2012, 14h38
  2. variables globales dans le gui
    Par lince102 dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 23/02/2008, 17h53
  3. Variable "globale" (dans plusieurs templa
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 17/06/2003, 19h22
  4. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

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