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 :

entrer une variable dans l'interface pour le programme


Sujet :

Interfaces Graphiques

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut entrer une variable dans l'interface pour le programme
    Bonjour,
    je voudrais pouvoir sur mon interface entrer une valeur d'une variable et qu'elle soit prise en compte dans mon programme car j'utilise cette variable pour trouver un autre résultat. Je n'arrive pas non plus à savoir quoi choisir pour entrer du texte et la valeur de cette variable.

    Merci pour votre aide.

  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
    Quelle est la question ?
    As-tu lu les tutoriels sur les GUI pour voir quels objets tu pouvais utiliser :
    Les tutoriels en français sur les Interfaces Graphiques
    Règles du Forum

    Adepte de la maïeutique

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut
    en fait dans mon interface j'ouvre une premiere image et je l'affiche. Ensuite j'appuie sur un bouton qui traite mon image et l'affiche.
    Dans mon traitement je récupere la valeur du centroid je fais pareil pour une autre image puis je compare ces deux centroid avec une variable : distance
    Quand j'entre 'distance' sur matlab il me retourne cette valeur mais je southerais l'afficher sur l'interface.

    Ensuite avec cette variable 'distance' je peux calculer la vitesse :
    speed = distance/ time
    Et je souhaite pouvoir entrer la valeur de la variable 'time' à partir de mon interface.

    J'espere que c'est plus clair.

  4. #4
    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
    Afficher la valeur distance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    t=uicontrol(gcf,...
    'style','text',...
    'string',distance);
    Pour plus d'infos voir les propriétés des objets UICONTROL, voir aussi l'aide de GCF.

    Créer un objet edit pour rentrer une valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t2=uicontrol(gcf,'style','edit');
    Règles du Forum

    Adepte de la maïeutique

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut
    Je suis désolé mais je ne comprends où je doit rentrer ce code, si c'est dans la fonction imbriquée ou créer un handles ????

  6. #6
    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
    Je ne peux pas savoir non plus : je ne connais pas la structure de ton code.
    J'ai juste répondu aux questions.

    Pour l'affichage de distance je suppose qu'il faudrait que tu le mettes après avoir calculer distance
    Règles du Forum

    Adepte de la maïeutique

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

    Il te suffit de mettre ce code dans la fonction qui gère ton interface (celle ou tu crées ton interface).

    Bon courage,
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  8. #8
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut
    Ca ne peut pas fonctionné car j'utilise deux fonctions imbriquée où dans la premiere je récupere la valeur du centroid 1 et dans une autre fonction la valeur du centroid 2.
    Il faut d'abord que j'arrive à sortir des fonctions ces valeurs?!

  9. #9
    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
    Pourrais-tu mettre un bout de code parce que là c'est pas facile de voir le pb.

    Mais le fait d'utiliser des fonctions imbriquées n'est pas forcément un problème, tu peux déclarer les variables dans la fonction principale et ainsi les récupérer partout où tu le souhaites...
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  10. #10
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut
    dans mes 2 fonctions :
    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
     
    axes (handles(5));
    imshow(I, 'InitialMagnification', 'fit')
     
    hold on
    for k = 1:numel(s2)
       centroid = s2(k).Centroid;
       text(centroid(1), centroid(2), sprintf('%d', k));
    end
    centr=s(1)
    ui_control (handles(8));
    imshow(centr);
     
    hold off
    end;
    et maintenant ce que je veux c'est faire 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
     
    %  function vitesse (obg,event)
    % 
    % resI = 1;  % Resolution suivant les lignes
    % resJ = 1;  % Resolution suivant les colonnes
    % 
    % %
    % % C1 =s(1) : centre dans l'image 1
    % % C2 : centre dans l'image 2
    % % 
    % 
     %distance = norm((s(2).Centroid-s(1).Centroid).*[resI resJ]);
    % 
    %  end

  11. #11
    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
    Dans ce cas, il te suffit d'ajouter le code que t'as donné Caro à la suite de ta fonction vitesse, non? (C'est pas ce qui a de plus optimisé mais ca devrait fonctionner...)
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  12. #12
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut
    ca ne va toujours pas car :
    dans ma fonction 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    imshow(I, 'InitialMagnification', 'fit')
     
    hold on
    for k = 1:numel(s2)
       centroid = s2(k).Centroid;
       text(centroid(1), centroid(2), sprintf('%d', k));
    end
    t(1)=s(1)
            centr=[t(1).Centroid;t(2).Centroid]
            area=[t(1).Area;t(2).Area]
    hold off
    end;

    dans ma fonction 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for k = 1:numel(s2)
       centroid = s2(k).Centroid;
       text(centroid(1), centroid(2), sprintf('%d', k));
    end
        t(1)=s(1)
            centr=[t(1).Centroid;t(2).Centroid]
            area=[t(1).Area;t(2).Area]
     
            hold off
        set(handleDeLobjet,'String',centr);

    et après la fonction vitesse mais matlab me retourne qu'il ne connait pas la variable 'distance' quand je lui demande sa valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     function vitesse (obg,event)
     
     resI = 1;  % Resolution suivant les lignes
     resJ = 1;  % Resolution suivant les colonnes
     
    distance = norm((t(2).Centroid-t(1).Centroid).*[resI resJ]);
     
    t=uicontrol(gcf,...
    'style','text',...
    'dimansion', [10 10 150 120],...
    'string',distance);
     
     end;

  13. #13
    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
    Citation Envoyé par spinalrock Voir le message
    mais matlab me retourne qu'il ne connait pas la variable 'distance' quand je lui demande sa valeur
    alors que tu viens de l'instancier avant, ça m'étonnerait que MATLAB te dise ça à cet endroit-là => merci de mettre le message d'erreur complet et la ligne de code correspondante.

    Citation Envoyé par spinalrock Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     function vitesse (obg,event)
     
     resI = 1;  % Resolution suivant les lignes
     resJ = 1;  % Resolution suivant les colonnes
     
    distance = norm((t(2).Centroid-t(1).Centroid).*[resI resJ]);
     
    t=uicontrol(gcf,...
    'style','text',...
    'dimansion', [10 10 150 120],...
    'string',distance);
     
     end;
    Par contre là MATLAB doit crier...As-tu été regardé dans la doc les propriétés des uicontrol ? 'dimansion' ça n'existe pas, c'est 'Position'...
    Règles du Forum

    Adepte de la maïeutique

  14. #14
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut
    Voici le message d'erreur :


    t =

    Area: 6163
    Centroid: [143 97]

    ??? Index exceeds matrix dimensions.

    Error in ==> essai2>image2 at 161
    centr=[t(1).Centroid;t(2).Centroid]

    ??? Error while evaluating uicontrol Callback

  15. #15
    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
    Qui donc n'a rien à voir avec ce que tu disais avant...

    La dimension de ta structure t telle qu'elle apparait est 1*1, tu essayes d'accéder à son 2ème élément => il n'y en a pas, MATLAB n'est pas content et c'est bien normal.
    Ne serait-ce pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    centr=[t.Centroid(1);t.Centroid(2)]
    Règles du Forum

    Adepte de la maïeutique

  16. #16
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut
    ca ne va pas car en fait matlab affiche bien les 2 valeurs des centroid (t) juste après l''avoir traité
    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
     
    IMG_1.PNG
    chemin =
     
    C:\Documents and Settings\CHARLOTTE\Bureau\stage\interface\
     
    t = 
     
            Area: 6163
        Centroid: [261 97]
     
    ??? Undefined function or variable 'handleDeLobjet'.
     
    Error in ==> essai2>image1 at 114
        set(handleDeLobjet,'String',centr);
     
    ??? Error while evaluating uicontrol Callback
     
    fichier =
     
    IMG_3.PNG
     
    chemin =
    C:\Documents and Settings\CHARLOTTE\Bureau\stage\interface\
    t = 
     
            Area: 6163
        Centroid: [143 97]
     
    >>
    mais moi ce que je veux calculer et afficher dans la fonction suivante c'est la distance entre les 2 centroid

  17. #17
    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
    Qu'est-ce qui ne va pas ?
    L'erreur que tu montres n'a rien à voir avec ce que tu dis.
    Là il te dit juste que tu utilises une variable (handleDeLobjet) que tu n'as définie nulle part.

    Je ne vois pas comment on peut t'aider si tu ne mets pas exactement :
    - le code que tu veux effectuer
    - les problèmes qui se posent à toi (message d'erreur, résultats faux...)
    Règles du Forum

    Adepte de la maïeutique

  18. #18
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut
    Le probleme c'est que mon code fait 200 lignes et que j'arrive pas à expliquer ce que je veux faire

  19. #19
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut
    Bon je vais essayer de procédé différement :

    directement dans la fonction imbriquée est ce que je peux faire 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
    20
    21
    22
     
            axes (handles(7));
            imshow(I, 'InitialMagnification', 'fit')
     
        hold on
    for k = 1:numel(s2)
       centroid = s2(k).Centroid;
       text(centroid(1), centroid(2), sprintf('%d', k));
    end
        t(1)=s(1)
        centr=[t.Centroid(1);t.Centroid(2)]    
        centr=[t(1).Centroid;t(2).Centroid]
            area=[t(1).Area;t(2).Area]
     
            hold off
        set(handleDeLobjet,'String',centr);
     
        t=uicontrol(gcf,...
    'style','text',...
    'position', [10 10 150 120],...
    'string',centr);
     end
    J'ai essayé ca ne marche pas mais je n'est pas de d'erreur mais rien ne s'affiche sur l'interface.
    mais sur matlab ca s'affiche.

  20. #20
    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
    Pourquoi on ne peut pas répondre :
    - ton code est mal présenté (ce qui est super important pour les nested functions) => avant de le copier, dans l'éditeur MATLAB fait CTRL+A puis CTRL+I ça fera une jolie indentation.
    - il nous manque des informations sur les variables :
    • t
    • handleDeLobjet

    Pourquoi fais-tu ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        centr=[t.Centroid(1);t.Centroid(2)]    
        centr=[t(1).Centroid;t(2).Centroid]
    La 1ère ligne ne sert à rien puisque la variable centr est écrasé par la 2ème ligne.
    Es-tu sur que ta variable t est de dimension 2 ?

    Et quand tu dis :
    mais sur matlab ca s'affiche.
    C'est quoi qui s'affiche dans MATLAB et pas dans l'interface ?
    Règles du Forum

    Adepte de la maïeutique

Discussions similaires

  1. [Débutant] Insérer une variable dans l'interface
    Par Ma29200 dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 15/02/2012, 13h08
  2. Problème avec le paramètrage d'une variable dans un lien pour un panier
    Par roy-mustang dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/09/2011, 13h07
  3. [MySQL] Problème avec la récupération d'une variable dans un lien pour un panier
    Par roy-mustang dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 23/06/2011, 13h58
  4. Entrer une variable dans une commande déja lancée
    Par Druks8 dans le forum Débuter
    Réponses: 6
    Dernier message: 18/02/2009, 12h55
  5. Réponses: 5
    Dernier message: 17/06/2006, 21h13

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