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: séparer les objects des callback


Sujet :

Interfaces Graphiques

  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: séparer les objects des callback
    Bonjour,

    Je suis en train de faire une interface avec Matlab mais j'aurais voulu avoir une liste d'objets qui seraient mise à jour à chaque opération avec une fonction de rafraichissement de l'interface mais mon problème est de gérer les fonctions callback dans ce cas. Je m'explique:

    Dans un fichier GUI_uicontrols je crée ma liste d'objets de l'interface comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function GUI_uicontrols
     
    global UICONTROLS
     
    UICONTROLS(5).style = 'pushbutton';;
    UICONTROLS(5).visible = 'on';
    UICONTROLS(5).handleVisibility = 'on';
    UICONTROLS(5).string = 'CLICK HERE';
    UICONTROLS(5).enable = 'on';
    UICONTROLS(5).position = [0.4 0.91 0.1 0.05];
    UICONTROLS(5).callback = 'go';
    et tous mes autres objets seront aussi stockés dans cette liste.

    Ensuite j'ai une fonction pour mettre l'interface à jour:

    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_UpdateFigure
    global UICONTROLS 
     
    for i = 1:size(UICONTROLS,2)
            uc = uicontrol('style',UICONTROLS(i).style,...
                            'units','normalized',...
                            'position',UICONTROLS(i).position,...
                            'string',UICONTROLS(i).string,...
                            'callback',UICONTROLS(i).callback);
            set(uc,'enable',UICONTROLS(i).enable);
            set(uc,'handleVisibility',UICONTROLS(i).handleVisibility);
            set(uc,'visible',UICONTROLS(i).visible);
    end
    Mais voilà ca coince quand je veux appeler ma fonction callback 'go'.

    Ou devrais-je définir cette fonction? Dans la fonction qui appelle updateFigure? ou directement dans updateFigure? Mais je ne peux pas définir toutes mes fonctions callback dans un même fichier à part?

    Merci pour votre aide!

  2. #2
    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 si je définie go dans une fonction séparée "function go..." ca marche.
    Mais j'ai un petit soucis parce qu'avant j'avais une fonction "@getValue" attaché à un edit box comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    e1 = uicontrol('style','edit',...
            'units','normalized',...
            'position',[0.2 0.91 0.08 0.04],...
            'string','',...
            'callback',@getValue);
    et sa fonction associée dans le même script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function getValue(hObject, eventdata, handles)
        global e1 
        factor = str2double(get(hObject,'string'));
        if isnan(factor)
          errordlg('You must enter a numeric value','Bad Input','modal')
          uicontrol(hObject)
            return
        else
            disp(num2str(factor));
            set(p1,'Enable','off');
        end
    Mais avec mon organisation maintenant j'ai une fonction séparée getValue mais je ne peux plus faire appel à ce hObject...
    J'avais stocké tous mes uicontrols handles dans une liste comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    for i = 1:size(UICONTROLS,2)
     
            MesUC.uc(i) = uicontrol('style',UICONTROLS(i).style,...
                            'units','normalized',...
                            'position',UICONTROLS(i).position,...
                            'string',UICONTROLS(i).string,...
                            'Foreground',UICONTROLS(i).fontColor,...
                            'FontName',UICONTROLS(i).font,...
                            'FontSize',UICONTROLS(i).fontSize,...
                            'FontWeight',UICONTROLS(i).fontWeight,...
                            'HorizontalAlignment',UICONTROLS(i).horizontalAlignment,...
                            'callback',UICONTROLS(i).callback);
     
    end
    J'ai tenté plusieurs choses:
    val = get(MesUC.uc(10),'Value') par exemple mais je n'arrive pas à récupérer la valeur entrée...

    Une idée?

  3. #3
    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
    tout ceci n'est pas très clair
    ce ne serait pas tout simplement gcbo que tu recherches ?

  4. #4
    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
    Non mais ca va j'ai trouvé mon erreur merci!
    Je m'étais trompé en sauvegardant mes handles UICONTROLS.h(i) au lieu de UICONTROLS(i).h...
    Merci.

Discussions similaires

  1. Réponses: 11
    Dernier message: 08/03/2013, 17h50
  2. Séparer les liens des sous-menus
    Par Marie08 dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/08/2011, 16h14
  3. Séparer les layout des slots
    Par thebarbarius dans le forum Débuter
    Réponses: 6
    Dernier message: 29/07/2011, 12h07
  4. Séparer les actions des divs identiques
    Par Boris56 dans le forum jQuery
    Réponses: 10
    Dernier message: 26/07/2010, 14h30
  5. séparer les centaines des milliers dans un double
    Par celiaaa dans le forum Access
    Réponses: 5
    Dernier message: 13/12/2006, 13h33

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