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 :

[Débutant] 2 Questions sur le Gui


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2003
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 29
    Par défaut [Débutant] 2 Questions sur le Gui
    Comment rendre bloquant mon gui ?
    Je m'explique: Un Gui (=Gui 1) avant de s'afficher s'initialise et ouvre un menu(= Gui 2) pour sélectionner un fichier.
    Le problème c'est que le Gui 1 n'attend pas le résultat du second pour s'afficher. (d'ou plein d'erreurs...)


    Comment récupérer le handle d'un GUI crée avec GUIDE ?
    Le but est de fermer la fenêtre du GUI 2, avec la fonction close(h), ou h est le handle du GUI. Ai-je bon ?

  2. #2
    Expert confirmé
    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
    Par défaut
    Comment rendre bloquant mon gui ?
    Un exemple .
    Il faut utiliser la propriété WindowStyle de ta fenêtre et la mettre à 'modal'.
    sinon tu as aussi la fonction UIWAIT.

    Comment récupérer le handle d'un GUI crée avec GUIDE ?
    Le but est de fermer la fenêtre du GUI 2, avec la fonction close(h), ou h est le handle du GUI. Ai-je bon ?
    Je ne suis pas sûre de comprendre le sens de la question mais je tente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    %on est dans la fonction de GUI1.
    %appel de GUI2 :
    hGui2=gui2(args);%hGui2 est le handle du GUI2
    delete(hGui2);%suppression de GUI2 depuis GUI1
    Pour la dernière ligne 2 choix : DELETE va supprimer ta fenêtre, CLOSE ferme la fenêtre en appelant au préalable la closeRequestFcn. A voir selon ce que tu veux faire.

  3. #3
    Membre averti
    Inscrit en
    Novembre 2003
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 29
    Par défaut
    Merci Ces indications m'on permit d'avancer dans mon programme; J'ai maintenant un gui (Gui 2) qui affiche un cell array. Il fonctionne indépendemment sans problème.

    Maintenant c'est assez spécial: J'ai mon Gui 1 qui appelait la fonction menu() (la fonction menu est celle de Matlab) et quand je la remplace pour mon Gui 2 le programme affiche deux fois à la suite, la fenetre du Gui 2 avant de continuer le programme normalement.

    C'est assez bizarre car il n'y a aucune erreur signalé. Je me demande si le problème ne vient du fait d'appeler un Gui à partir d'un autre.

  4. #4
    Expert confirmé
    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
    Par défaut
    Peux-tu montrer la partie du code (la sous-fonction) où tu appelles ton gui2 ?
    Et par quelle action elle est appelée ?

  5. #5
    Membre averti
    Inscrit en
    Novembre 2003
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 29
    Par défaut
    Voici la sous-fonction qui appelle le Gui 2 (le gui 2 se nomme menu_lst)
    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
    % --- sel_suffixe_sre() : selection des suffixes des fichiers .sre dispo.
    function sel_suffixe_sre();
    global p
    
    rep = p.fic.rep_nom;
    sre_lst = dir([rep filesep '*.sre']);
    sre_lst_n = length(sre_lst);
    sre_suffixe_lst = cell(sre_lst_n,1);
    for k = 1:sre_lst_n
        n = regexp(sre_lst(k).name,'_\w+\>\.');
        suffixe = sre_lst(k).name(n+1:end-4);
        sre_suffixe_lst{k} = suffixe;
    end
    sre_suffixe_lst = unique(sre_suffixe_lst);
    p.sre.suffixe_lst = sre_suffixe_lst;
    
    p.sre.suffixe_lst_i=menu_lst(p.sre.suffixe_lst);
    %p.sre.suffixe_lst_i=menu_visuavecmonitoring('Choisir le suffixe des fichiers .sre à utiliser',p.sre.suffixe_lst); (Ancien menu)
    
    p.fic.sre_suffixe = char(p.sre.suffixe_lst(2));
    Voilà la fonction qui appelle sel_suffixe_sre();
    Fonctionnellement, ça donne un menu de selection de fichiers; on choisit un fichier et dans ce fichier il y a plusieurs enregistrements : grâce au menu on peu selectionner l'enregistrement que l'on désire.

    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
    % --- init_sel_spe() : sélectionne un ensemble de fichier spe
    function init_sel_spe(chemin);
    global p
    %constantes
    p.fichier.lit_constantes();
     
    fprintf('ici');
    % sélection de fichiers spe
    if ~p.ihm.sel_spe(chemin)
        return
    end
    p.fichier.lit_ini();
    % chargement des paramètres (lecture fichier .ini)
    p.spe_n = sum(p.fic.spe_n);       % nombre total de spectres
    p.fic.spe_nom_lst_i = 1;
    p.spe_k = 1;
    p.spe_i = 1;
     
     
    affiche_parametre_constante();
     
    % chargement des spectres de calibration de réference (lecture fichier .cal)
    p.fichier.lit_cal_ref();
    % chargement des spectres de calibration (lecture fichier .cal)
    p.fichier.lit_cal();
    % recherche des .sre disponible
    sel_suffixe_sre();
    % chargement des fichiers résultats (lecture fichier .sre)
    p.fichier.lit_sre();

  6. #6
    Expert confirmé
    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
    Par défaut
    Je ne vois pas ce qui coince...
    Là je te conseille d'utiliser le debuggueur en mettant un tag au niveau de l'appel de menu_lst (pour mettre un tag : cliquer à gauche de la ligne souhaitée : ça fait un joli rond rouge) et faire du pas à pas (avec F10) pour voir quand il crée la fenêtre pour la 2ème fois.




    PS : je sais pas si je te lai déjà dit mais les variables globales c'est mal

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

Discussions similaires

  1. question sur gui MATLAB
    Par mez.hmimed dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 19/04/2012, 20h43
  2. question sur gui matlab
    Par mez.hmimed dans le forum Interfaces Graphiques
    Réponses: 0
    Dernier message: 19/04/2012, 19h58
  3. Question sur le gui builder
    Par donyas dans le forum NetBeans
    Réponses: 2
    Dernier message: 22/02/2007, 22h26
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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