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 :

Récupération variable retournée par fonction via 'callback' dans un uicontrol [Débutant]


Sujet :

Interfaces Graphiques

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 25
    Points : 29
    Points
    29
    Par défaut Récupération variable retournée par fonction via 'callback' dans un uicontrol
    Bonjour,

    Dans mon programme principal, je définis un bouton poussoir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        uicontrol(...
          'Parent',h_lat_panel,...
          'Units','normalized',...
          'Position',[0.3,0.9,0.4,.025],...
          'BackgroundColor',0.8*[0.4314,0.5882,0.8431],...
          'ForegroundColor',[1,1,1],...
          'HitTest','off',...
          'Style','pushbutton',...
          'FontSize',10,...
          'FontWeight','bold',...
          'String','Ouvrir',...
          'Callback',@OpenFile);
    la fonction appelée par le callback est de la forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [CarteControle] = function OpenFile(~,~)
    ...
    end
    Est-il possible de récupérer la variable CarteControle au niveau de mon programme principal ? Et si oui, quelle syntaxe utiliser pour définir le 'Callback' de mon bouton poussoir ?

    En fait, j'ai trouvé un article sur le web:

    http://matlabfr.wordpress.com/2007/11/15/callbacks/

    où il est écrit que l'utilisation d'un callback sous la forme d'un handle de fonction ne permet ni de passer des arguments d'entrée, ni de récupérer un argument de sortie.
    Pourtant, il est bien possible de passer des arguments d'entrée avec la syntaxe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    'Callback',{@OpenFile,screen},...
    ...
    la fonction OpenFile devant être écrite ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [CarteControle] = function OpenFile(~,~,screendata)
    ...
    end
    Du coup, comme il est en fait possible de passer des arguments d'entrée, je me dis qu'il doit être possible de récupérer un argument de sortie.

    Si non, comment faire ?

    Par avance, merci
    Luis


    matlab R2010a
    Windows XP sp3

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    As-tu lu le tutorial disponible sur notre site :
    Développement efficace des interfaces graphiques?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 25
    Points : 29
    Points
    29
    Par défaut question plus générale
    Oui, je l'avais déjà lu. Mais je trouvais que l'utilisation de getappdata et setappdata (ce que j'ai finalement fait) était inélégant comparé à une possible récupération directe des données depuis le 'callback'

    Mon problème est donc résolu. Bien que cela ne me dise pas s'il est possible ou non de récupérer des données via le 'callback'...

    Cela m'amène du coup à une autre question. où puis-je trouver des informations précise sur ce que je peux faire ou non avec le 'callback' d'un uicontrol ?

    Mais peut-être devrais-je ouvrir une autre discussion pour cela ??

  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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Pour ta question, non il n'est pas possible de récupérer un argument de sortie d'un Callback tout simplement car le Callback n'est pas appelé par une autre fonction mais par un évènement sur un objet graphique (donc où pourrait-on récupérer ensuite la variable de sortie du Callback?)

    Un Callback est ni plus ni moins qu'une fonction, tu peux donc y faire tout ce que tu veux à priori. En général on essaye de découpler la gestion de l'interface de la gestion des données donc on code dans les Callbacks les actions relatives à la gestion de l'interface et tout le reste dans des fonctions spécifiques (qui peuvent être appelées depuis un Callback).

    Bonne journée,
    Duf

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 25
    Points : 29
    Points
    29
    Par défaut cas résolu
    merci à duf42 pour ces explications. C'est plus clair pour moi à présent.

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

Discussions similaires

  1. Concaténer une variable retourner par une fonction
    Par neogamaes dans le forum MATLAB
    Réponses: 9
    Dernier message: 17/02/2010, 16h49
  2. Réponses: 6
    Dernier message: 10/04/2009, 11h06
  3. Réponses: 6
    Dernier message: 17/06/2008, 12h20
  4. [MySQL] Récupérer une variable d'une fonction et enregistrement dans une base de données
    Par Mikke dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 03/03/2008, 17h02
  5. Réponses: 1
    Dernier message: 22/05/2006, 11h27

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