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 :

Problème GUI et visibilité des variables


Sujet :

Interfaces Graphiques

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 82
    Points : 63
    Points
    63
    Par défaut Problème GUI et visibilité des variables
    Bonjour,
    J'ai des problèmes, surement dus à une mauvaise compréhension, en utilisant les fonction guihandles et guidata.
    Je précise que j'aimerais éviter les variables globales

    Je déclare dans ma fonction principale une figure globale et une variable new_choix dans la structure data.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function gui_simu
    % Création de l'objet Figure (fenêtre principale de la gui)
    figure('units','pixels',...
        'position',[resol(3)*0.1,resol(4)*0.1,resol(3)*0.8,resol(4)*0.8],...
        'color',[1.0 1.0 1.0],...
        'numbertitle','off',...
        'name','Simulateur d images US',...
        'menubar','none',...
        'tag','interface');
    data=guihandles(gcf);
    data.new_choix=0;
    guidata(gcf,data);
    J'appelle ensuite une nouvelle fonction 'param_deplacement'

    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
     
    function param_deplacement
     
    y_top=0.3;
    x_top=0.01;
    dy=0.03;
    dx=0.3;
     
     
    % Titre général
    % Création de l'objet Uicontrol popup-menu
    uicontrol('style','popupmenu',...
        'units','normalized',...
        'position',[x_top y_top-dy dx/2*0.9 dy*2/3],...
        'string','Flux parabolique|Translation',...
        'callback',@choix_dep,...
        'tag','bouton_popup_dep');
    qui appelle une fonction 'choix_dep' via un callback sur un menu popup.

    Mon problème se situe ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function choix_dep(obj,event)
     
    % Fonction appelée lors de l'utilisation du menu popup de choix de type de déplacement
    data=guidata(gcbf)
     
    choix=get(data.bouton_popup_dep,'value');
    switch(choix)
        case(1)
            param_vaisseau
        case(2)
            param_lineaire
    end
    Je ne vois pas data.new_choix que j'aimerais utiliser pour savoir si cette fonction choix_dep a déjà été appelée.

    J'ai généralement du mal avec guihandles et guidata. Je ne comprends pas bien comment faire pour que tout ce qui est dans data soit visible tout le temps en appelant guidata(gcbf).

    Merci de votre aide,
    Adrien

  2. #2
    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
    Tu es sûr que ce n'est pas plutôt le champ "bouton_popup_dep" qui n'existe pas.
    Le fait de créer ce uicontrol dans une fonction à part fait que ce champ n'est pas généré automatiquement par guihandles.
    Il faut donc le mettre "à la main".

    Normalement les commandes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    data.new_choix=0;
    guidata(gcf,data);
    font que le champ new_choix existe dans la structure data, donc je ne vois pas pourquoi il n'existerait pas dans une fonction appelée après.
    A moins qu'il n'y ait plus d'une fenêtre ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 82
    Points : 63
    Points
    63
    Par défaut
    Non, le bouton_popup_dep existe bien et je n'ai qu'une fenêtre.
    Après diverses lectures, j'ai modifié un peu mon code en passant par des set/getappdata au lieu de guidata.
    Ca semble plus pratique et fiable.
    Merci,
    Adrien

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

Discussions similaires

  1. problème de visibilité des variables
    Par elhem dans le forum C#
    Réponses: 3
    Dernier message: 18/08/2009, 22h07
  2. Exécution GUI - Visibilité des variables utilisées
    Par sjunod dans le forum Interfaces Graphiques
    Réponses: 8
    Dernier message: 27/05/2009, 15h44
  3. Problème de visibilité des variables globales
    Par imaril dans le forum MATLAB
    Réponses: 3
    Dernier message: 21/04/2008, 02h20
  4. problème de visibilité des variables dans un include
    Par d1g-2-d1g dans le forum Langage
    Réponses: 6
    Dernier message: 28/11/2005, 09h35
  5. [EasyPHP] problème de visibilité des variable dans les includes
    Par d1g-2-d1g dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 23/10/2005, 01h55

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