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 :

Pause du programme au niveau du GUI


Sujet :

Interfaces Graphiques

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Pause du programme au niveau du GUI
    Bonsoir a tous !

    Je travaille sur une interface GUI dans laquelle on doit entrer une serie de valeurs (dans des edit), j'arrive sans problème à récupérer ces valeurs lorsque je lance le GUI seul, mon problème se pose quand je veux intégrer ces valeurs dans un autre .m. en effet j'ai essayé de faire :
    1 executer le GUI
    2 executer le .m

    l'ennui c'est qu'il lance le GUI mais il n'attend pas que les valeurs soit récupérées avant de lancer le .m, du coup le .m s'arrète en disant qu'il n'a pas les valeurs (normal quoi !)
    Je voudrais donc faire un système de bouton qui lance le programme une fois que l'on appuie sur ce bouton du gui et pas avant.

    Je ne sais pas si c'est clair alors je met ma structure ici :

    Mon gui :
    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
    31
    32
    33
    34
    35
    36
    function Affichage
      figure('MenuBar','none','Name','Choix des parametres','NumberTitle','off','Position',[200,200,400,300]);
     
      uicontrol('Style','edit','String','','Position',[200,150,70,20],...
        'CallBack',@val1);
        uicontrol('Style','text','String','Valeur de la premiere image','Position',[20,150,150,20]);
        uicontrol('Style','text','String','Valeur de la deuxieme image','Position',[20,120,150,20]);
      uicontrol('Style','edit','String','','Position',[200,120,70,20],...
        'CallBack',@val2);
      uicontrol('Style','ToggleButton','String','OK','Position',[80,60,60,20],...
        'CallBack',@valider);
     
     
    function val1(hObject, eventdata, handles)
            valeur1 = str2double(get(hObject,'string'));
            if isnan(valeur1)
            errordlg('Veuillez entrer une valeur numérique','Erreur','modal')
            return
            end
            assignin('base','valeur1',valeur1);
      end;
     
      function val2(hObject, eventdata, handles)
            valeur2 = str2double(get(hObject,'string'));
            if isnan(valeur2)
            errordlg('Veuillez entrer une valeur numérique','Erreur','modal')
            return
            end
            assignin('base','valeur2',valeur2);
      end;
     
     
     
      function valider(h, eventdata)    
        close all
      end;

    et la structure de mon programme .m faisant appel au gui:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Affichage
    for n=valeur1:valeur2
     %instructions diverses
    end
    Si je résume il execute tout d'un coup, comment faire pour qu'il attende la fermeture du GUI pour entrer dans la boucle ?
    Toute idée est la bienvenue !

  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 828
    Points
    14 828
    Par défaut
    Tu peux utiliser la fonction WAITFOR.
    Pour cela il faut faire une modification dans le code de ton GUI pour pouvoir récupérer le handle de ta figure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    function hFigure = Affichage
      hFigure = figure('MenuBar','none','Name','Choix des parametres','NumberTitle','off','Position',[200,200,400,300]);
    Puis dans ton programme principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    hFigure = Affichage;
    waitfor(hFigure);%attend jusqu'à ce que la figure de handle hFigure soit fermée
    for n=valeur1:valeur2
     %instructions diverses
    end
    Si je puis me permettre une petite remarque sur la fin de ton code de ton GUI :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function valider(h, eventdata)    
        close all
    end;
    Faire un "close all" est dangereux, tu va fermer toutes les autres figures ouvertes.
    Il est plutôt conseillé de faire :GCBF représentant le handle de la figure courante.

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    D'accord j'ai pigé ça fonctionne ! merci beaucoup merci pour le conseil sur le "close", je ne connaissais pas cette commande

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

Discussions similaires

  1. langage de programmation de niveau moyen
    Par sjprm dans le forum Calcul scientifique
    Réponses: 9
    Dernier message: 21/02/2007, 10h26
  2. programmation d'evenements et GUI
    Par nialaz dans le forum Tkinter
    Réponses: 3
    Dernier message: 25/01/2007, 00h14
  3. Driver - Programmation Bas niveau
    Par abennis dans le forum Administration système
    Réponses: 15
    Dernier message: 21/07/2006, 16h50
  4. Programmation bas niveau de la carte vidéo !!
    Par Invité dans le forum Assembleur
    Réponses: 3
    Dernier message: 03/03/2005, 11h05
  5. [LG]Pause de programme ou Break time
    Par lvdnono dans le forum Langage
    Réponses: 11
    Dernier message: 17/05/2003, 17h23

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