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 :

Aide création d'interface


Sujet :

Interfaces Graphiques

  1. #21
    Membre régulier
    Homme Profil pro
    Stagiaire assistant ingénieur R&D
    Inscrit en
    Mai 2014
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Stagiaire assistant ingénieur R&D

    Informations forums :
    Inscription : Mai 2014
    Messages : 54
    Points : 74
    Points
    74
    Par défaut
    si tu comptes effictivement utiliser des variables de ton interface graphique dans ta fonction main, il faut lui déclarer les variables.
    L'idéal est de sauvegarder toutes tes variables dans l'handles

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    handles.variable1 = ..;
    handles.variable2 = ..;
    Pour chaque variable que tu comptes réutiliser dans une autre fonction.
    Pour ta fonction main, je te conseille ensuite de lui faire passer l'handles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function [variable_sortie1, variable_sortie2 ..] = main(handles)
    ainsi tu pourra réutiliser tout ce qui est enregistré dans l'handles, en notant bien que pour sauvegarder tes variables, il te faudra utiliser la ligne de code suivante (dans les callback ou sont définies tes variables) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    guidata(hObject, handles);

  2. #22
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 18
    Points : 1
    Points
    1
    Par défaut
    Bon ok je vois tous mes problèmes, je vais tenter de les regler un par un:

    j'ai rentré dans chacun de mes callback des boutons de choix d'antenne le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [name, path] = uigetfile;
    full_path = fullfile(path,name);
    myDatas = importdata(full_path); % ici la variable n'est pas "sauvegardé"
    % plutôt faire ceci:
    handles.myDatas = importdata(full_path);
    guidata(hObject,handles); % pour "enregistrer" la variable
    et dans le callback qui lance le calcul j'ai rentré l'instruction handles.myDatas (je pensais comme ca mettre tous mes handles au même endroit pour pouvoir les charger dans le main plus tard). Maintenant, il faut faire passer dans le main les deux variables "p" et "t" que contient le fichier que je viens de charger.

    Du coup, dans main je rajoute la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function [variable_sortie1] = main(handles)
    Mais je doit mettre quoi à la place de "variable_sortie1"? j'ai essayé avec "myDatas" et [p, t] mais il me sort encore comme erreure qu'il ne connait pas "p"

  3. #23
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Dans les script de ton programme main, il faut que tu indiques ce que tu vas sortir.

    main doit avoir cet aspect:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function sorties = main(handles)
     
    % toutes mes instructions...
    sorties.p = p;
    sorties.t = t;
    et donc quand tu fais l'appelle à ton main tu pourras faire ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mesResultats = main(handles);
    % et tu auras mesResultats.p et mesResultats.t
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  4. #24
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 18
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Gooby Voir le message
    Dans les script de ton programme main, il faut que tu indiques ce que tu vas sortir.
    Comment ca?

    Citation Envoyé par Gooby Voir le message
    main doit avoir cet aspect:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function sorties = main(handles)
     
    % toutes mes instructions...
    sorties.p = p;
    sorties.t = t;
    ok je met ca dans mon main, au dessus de rwg1.

    Citation Envoyé par Gooby Voir le message
    et donc quand tu fais l'appelle à ton main tu pourras faire ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mesResultats = main(handles);
    % et tu auras mesResultats.p et mesResultats.t
    Ca c'est dans le callback de l'interface?

  5. #25
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Citation Envoyé par link47450 Voir le message
    Ca c'est dans le callback de l'interface?
    Oui, à l'endroit où tu fais appel à ton main.
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  6. #26
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 18
    Points : 1
    Points
    1
    Par défaut
    Bon du coup

    Le code de mon interface donne, pour le pushbutton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    % --- Executes on button press in pushbutton6.
    function pushbutton6_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton6 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    handles.myDatas;
    mesResultats = main(handles);
    et celui de mon main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function sorties = main(handles)
     
    % toutes mes instructions...
    sorties.p = p;
    sorties.t = t;
     
    rwg1
    rwg2
    rwg3
    rwg4
     
    figure(1)
    rwg5
    il me sort pour erreur
    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
    Undefined function or variable 'p'.
     
    Error in main (line 4)
    sorties.p = p;
     
    Error in Interface>pushbutton6_Callback (line 90)
    mesResultats = main(handles);
     
    Error in gui_mainfcn (line 95)
            feval(varargin{:});
     
    Error in Interface (line 42)
        gui_mainfcn(gui_State, varargin{:});
     
    Error in
    @(hObject,eventdata)Interface('pushbutton6_Callback',hObject,eventdata,guidata(hObject))
     
     
    Error while evaluating uicontrol Callback

  7. #27
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Posons nous les bonnes questions. Que veux tu récupérer en sortie de ton main?
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  8. #28
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 18
    Points : 1
    Points
    1
    Par défaut
    Alors pour te répondre je vais indiquer ce que fait le programme.

    main lance les uns à la suite des autres 5 programmes : rwg1...5

    C'est un fichier que j'ai créer pour ne pas avoir à aller sur rwg1 faire run et ainsi de suite jusqu'au 5ième et aussi pour pouvoir sortir des rwgi 3 paramètres. Comme ca j'ai plus à aller fouiller dans le code, je les fixe à la main.

    Chacun des rwgi marche de la même facon
    - il commence par charger un fichier
    - il calcul un truc spécifique
    - sauvegarde ses résultats dans un fichier qui sera chargé dans rwg(i+1) sauf le 5 qui me trace l'antenne et la densitée de courrant

    Donc en soit je ne veux rien récuperer de main puisque rwg5 me trace dans une nouvelle fenêtre

  9. #29
    Membre régulier
    Homme Profil pro
    Stagiaire assistant ingénieur R&D
    Inscrit en
    Mai 2014
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Stagiaire assistant ingénieur R&D

    Informations forums :
    Inscription : Mai 2014
    Messages : 54
    Points : 74
    Points
    74
    Par défaut
    Ou sont défini tes variable p et t ?
    Dans le cas présent, dans ton main tu donne des valeurs à 'sorties' que Matlab n'a pas défini en mémoire (d'ou l'erreur).

  10. #30
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 18
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par yop3112 Voir le message
    Ou sont défini tes variable p et t ?
    Dans le cas présent, dans ton main tu donne des valeurs à 'sorties' que Matlab n'a pas défini en mémoire (d'ou l'erreur).
    Ces deux variables sont dans le fichier que je veux charger au tout début (platecoarse platefine dipole..)

  11. #31
    Membre régulier
    Homme Profil pro
    Stagiaire assistant ingénieur R&D
    Inscrit en
    Mai 2014
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Stagiaire assistant ingénieur R&D

    Informations forums :
    Inscription : Mai 2014
    Messages : 54
    Points : 74
    Points
    74
    Par défaut
    Des que tes variables p et t sont chargés, tu dois les sauvegardés en mémoire dans l'handles (de façon à pouvoir les réutiliser). Dans ton cas, c'est juste apres le chargement de ton fichier de données.
    Ensuite, dans les programmes ou tu utilises ces valeurs, tu dois appeler cet handles, de façon à chargés tes variables et ainsi pouvoir les utilisés.

    Je ne vois pas trop l'intérêt de ta fonction main, si tu n'as pas de variables de sorties à sauvegardés. Tu peux directement appeler tes fonctions rwgi dans le callback de ton pushbutton.
    Apres cela on revient encore aux variables en mémoire avec tes fonctions rwgi, pour lesquelles ils faut faire passer les variables p et t.

  12. #32
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 18
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par yop3112 Voir le message
    Je ne vois pas trop l'intérêt de ta fonction main, si tu n'as pas de variables de sorties à sauvegardés. Tu peux directement appeler tes fonctions rwgi dans le callback de ton pushbutton..
    Comme je l'ai mis plus haut, c’était un fichier que j'ai créer pour ne pas avoir à aller sur rwg1 faire run et ainsi de suite jusqu'au 5ième et pour sortir la variable frequence de rwg 3 et le vecteur de polarisation de rwg4 quand je testais le code. Je peux effectivement supprimer ce fichier et mettre les rwgi dans mon callback.

    Citation Envoyé par yop3112 Voir le message
    Des que tes variables p et t sont chargés, tu dois les sauvegardés en mémoire dans l'handles (de façon à pouvoir les réutiliser).
    C'est pas justement ce que fais cette instruction dans le callback du pushbutton ou je charge le fichier?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [name, path] = uigetfile;
    full_path = fullfile(path,name);
    myDatas = importdata(full_path); % ici la variable n'est pas "sauvegardé"
    % plutôt faire ceci:
    handles.myDatas = importdata(full_path);
    guidata(hObject,handles); % pour "enregistrer" la variable

  13. #33
    Membre régulier
    Homme Profil pro
    Stagiaire assistant ingénieur R&D
    Inscrit en
    Mai 2014
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Stagiaire assistant ingénieur R&D

    Informations forums :
    Inscription : Mai 2014
    Messages : 54
    Points : 74
    Points
    74
    Par défaut
    Dans ce cas la tu as sauvegarder la variable handles.MyDatas qui correspond au chargement de ton fichier (je ne sais pas ce que cela contient).
    Tu peux réutiliser cette variable par la suite, mais il doit falloir en extraire ton p et ton t

  14. #34
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 18
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par yop3112 Voir le message
    Dans ce cas la tu as sauvegarder la variable handles.MyDatas qui correspond au chargement de ton fichier (je ne sais pas ce que cela contient).
    Tu peux réutiliser cette variable par la suite, mais il doit falloir en extraire ton p et ton t
    C'est le fichier que je choisis en cliquant sur l'un des boutons sur la droite. Il charge les paramètres p et t d'une antenne que j'ai fais sur pdetool, ya rien d'autre sur le fichier

    Et dans le callback du pushboutton qui lance le calcul j'ai mis cette instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mesResultats = main(handles);

  15. #35
    Membre régulier
    Homme Profil pro
    Stagiaire assistant ingénieur R&D
    Inscrit en
    Mai 2014
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Stagiaire assistant ingénieur R&D

    Informations forums :
    Inscription : Mai 2014
    Messages : 54
    Points : 74
    Points
    74
    Par défaut
    Je te conseille vivement d'aller lire les tutoriels sur les interfaces graphiques du forum qui permettent de comprendre les bases de la programmation de ce genre de programme.

    Quoi qu'il en soit je ne connais pas les fichiers sortie de pdetool (que je n'ai jamais utilisé), est-ce un structure ou des valeurs distinctes ?

    Cependant, je te conseille quand même de sauvegarder indépendamment tes deux variables p et t.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [name, path] = uigetfile;
    full_path = fullfile(path,name);
    myDatas = importdata(full_path); % ici les variables p et t doivent être chargés (si j'ai bien compris)
    % Sauvegarde de p et t
    handles.p = % Mettre sa valeur
    handles.t = % Mettre sa valeur
    guidata(hObject,handles); % pour "enregistrer" les variables
    Puis ensuite tu y fait appel dans les fonction ou tu en as besoin (les rwgi j'imagine)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function pushbutton6_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton6 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    rwg1(handles.p,handles.t)
    rwg2(handles.p,handles.t)
    rwg3(handles.p,handles.t)
    rwg4(handles.p,handles.t)
     
    figure(1)
    rwg5(handles.p,handles.t)
    En parallèle de ça, tu définis tes rwgi comme des fonctions prenant 2 arguments en entrée :


  16. #36
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 18
    Points : 1
    Points
    1
    Par défaut
    Merci de continuer à m'aider dans ce problème

    Citation Envoyé par yop3112 Voir le message
    Je te conseille vivement d'aller lire les tutoriels sur les interfaces graphiques du forum qui permettent de comprendre les bases de la programmation de ce genre de programme.
    J'ai déjà lu ces pages mais comme je n'ai jamais fais ca sous matlab je manque de pratique...

    Citation Envoyé par yop3112 Voir le message
    Quoi qu'il en soit je ne connais pas les fichiers sortie de pdetool (que je n'ai jamais utilisé), est-ce un structure ou des valeurs distinctes ?

    Cependant, je te conseille quand même de sauvegarder indépendamment tes deux variables p et t.
    Je ne pense pas pouvoir écrire à la main les paramètres p et t car je une fois que j'ai rendu mon projet, la personne qui l'utilise ne doit pas toucher au code, sauf aux fichiers d'antenne. En gros, elle peut être amené à changer les dimension d'une antenne (par exemple changer la longueur du dipole) et donc le maillage va changer et donc la valeur des paramètres aussi.
    J'ai chargé un des fichiers et tapé whos pour te montrer ce qu'il contiennent. Comment je pourrais faire, pour qu'une fois chargé je puisse récuperer dans un callback ce qu'il contient?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >> load bowtie
    >> whos
      Name      Size             Bytes  Class     Attributes
     
      p         3x174             4176  double              
      t         4x274             8768  double

Discussions similaires

  1. [Débuter] Création d'interfaces à l'aide de Qt Designer
    Par rawdh dans le forum Qt Creator
    Réponses: 2
    Dernier message: 28/02/2014, 22h57
  2. Aide création tableau dans interface graphique
    Par craps78 dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 03/04/2007, 17h59
  3. [Aide] Création d'une interface Ajout/Suppression
    Par Fredods26 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 19/10/2006, 14h16
  4. Création d'interface graphique pour débutant ...
    Par lesuisse dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 08/03/2006, 13h20
  5. Réponses: 2
    Dernier message: 29/03/2004, 18h29

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