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 :

changement de valeurs via buttonpush


Sujet :

Interfaces Graphiques

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 89
    Points : 85
    Points
    85
    Par défaut changement de valeurs via buttonpush
    Bonjour à tous,

    Alors voilà mon problème :

    Dans un programme, j'aimerai pouvoir donner à l'utilisateur le choix entre deux options de manière interactive. Pour ça, dans le programme principal, j'appelle un sous programme "interface" dans lequel je crée une fenêtre avec 2 boutons poussoir intitulés "manuelle" et "aléatoire".

    Voici le code correspondant :

    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
    function interface
    %% Création de la figure
    f=figure('Visible','off','Position',[450,300,350,200]);
     
    %% Création des éléments de la figure
    hmanuel=uicontrol('Style','pushbutton',...
                      'String','manuelle',...
                      'Position',[50 90 100 50],...
                      'Callback',{@set_choice});
     
    haleatoir=uicontrol('Style','pushbutton',...
                        'String','aléatoire',...
                        'Position',[200 90 100 50],...
                        'Callback',{@set_choice});
     
    htitre=uicontrol('Style','text',...
                     'String','Comment voulez-vous selectionner les centres des clusters?',...
                     'Position',[10 160 330 10]);
     
    %% Affichage de la figure                
    set(f,'Visible','on');
     
     
        function set_choice(source,eventdata)
            str = get(source,'String'); 
            switch str
                case 'manuelle'
                    %action           
                case 'aléatoire'
                    %autre action         
            end            
        end   
     
    end

    le truc, c'est que je sais pas comment pouvoir exploiter le bouton sur lequel j'appuie.
    Dans mon programme principal ou j'appelle la fonction "interface", j'aimerai pouvoir récupérer une valeur qui m'indique sur quel bouton je viens de cliquer.

    J'ai essayé un truc du style
    choix=interface;
    avec les
    %action
    dans le code remplacés par des trucs du genre
    choix=1;
    ou
    choix=2
    mais sans succès...

    Donc voilà, si qqn a une idée, je le remercie d'avance!!
    Si j'ai pas été clair sur ce que je voulais ou si il vous semble qu'il manque des infos, dites le moi.


    D'avance merci!

  2. #2
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Essaie ceci :
    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
    function interface
    %% Création de la figure
    f=figure('Visible','off','Position',[450,300,350,200]);
    
    %% Création des éléments de la figure
    hmanuel=uicontrol('Style','pushbutton',...
                      'String','manuelle',...
                      'Position',[50 90 100 50],...
                      'Callback',{@set_choiceManu});
                  
    haleatoir=uicontrol('Style','pushbutton',...
                        'String','aléatoire',...
                        'Position',[200 90 100 50],...
                        'Callback',{@set_choiceAuto});
                    
    htitre=uicontrol('Style','text',...
                     'String','Comment voulez-vous selectionner les centres des clusters?',...
                     'Position',[10 160 330 10]);
    
    %% Affichage de la figure                
    set(f,'Visible','on');
    
    
    function set_choiceManu(source,eventdata)
    % traitement manuel
    
    function set_choiceAuto(source,eventdata)
    % traitement auto

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 89
    Points : 85
    Points
    85
    Par défaut
    Merci pour ta réponse kmaniche.

    Oui, j'avais essayé un truc comme ça au début...
    Mais en fait mon problème, c'est que je sais pas comment faire remonter l'info au programme principal dans lequel la fonction "interface" a été appelée. En fait, ce choix va être un paramètre d'une autre fonction que je vais appeler dans mon programme principal

    De manière simplifiée, voilà ce que j'aimerai que ça fasse :

    Prog principal
    ....le code d'avant

    demande à l'utilisateur de choisir le mode de fonctionnement (auto ou manuel)

    ...le programme principal continue
    Fin Prog principal
    Donc en gros, mon problème réside dans l'aspect interaction avec l'utilisateur..

    Si tu as d'autres suggestions, je suis preneur!

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour.
    Un exemple dans la suite de kmaniche :
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    function interface
     global str
    %% Création de la figure
    f=figure('Visible','off','Position',[450,300,350,200]);
    %% Création des éléments de la figure
    hmanuel=uicontrol('Style','pushbutton',...
                      'String','manuelle',...
                      'Position',[50 90 100 50],...
                      'Callback',{@set_choiceManu});              
    haleatoir=uicontrol('Style','pushbutton',...
                        'String','aléatoire',...
                        'Position',[200 90 100 50],...
                        'Callback',{@set_choiceAuto});
    exit=uicontrol('Style','pushbutton',...
                        'String','exit',...
                        'Position',[100 19 100 50],...
                        'Callback',{@set_choiceExit});                   
    htitre=uicontrol('Style','text',...
                     'String','Comment voulez-vous selectionner les centres des clusters?',...
                     'Position',[10 160 330 10]);
     
    %% Affichage de la figure                
    set(f,'Visible','on');
    str='rien';
    auto=1;
    while auto==1
     
          switch str
              case 'rien'
     
                case 'manuelle'
                    %action 
                    str
                case 'aleatoire'
                    %autre action    
                     str
                 case 'exit'
                     auto=0;
                     close all
            end            
     
          pause(0.1)
      end
    function set_choiceManu(source,eventdata,handles)
    global str
    str='manuelle';
    function set_choiceAuto(source,eventdata,handles)
    global str
    str='aleatoire';  
    function set_choiceExit(source,eventdata,handles)
    global str
    str='exit';

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 89
    Points : 85
    Points
    85
    Par défaut
    Merci pour vos réponses à tous les deux.
    En fait, j'ai trouvé une façon de parvenir à mes fins : j'utilise une variable globale.

    C'est peut-être moins élégant, mais ça marche.

    Mais du coup, j'ai un autre problème (qui n'est plus trop en rapport avec les GUI, mais je pose quand même la question dans la foulée..) :

    Mon programme principal s'exécute, il arrive à la fonction "interface" qui se fait tranquillement.
    Le hic c'est que la valeur de "choix" que je récupère avec mes p'tits boutons, en théorie, j'en ai besoin dans une autre fonction plus bas... qui s'exécute avant que la fonction "interface" soit finie...

    Ce qui amène ma question :
    Comment fait-on pour dire au programme de s'arrêter tant que ma fonction "interface" n'est pas finie, et qu'il continue après??

    Merci d'avance!!

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Comment fait-on pour dire au programme de s'arrêter tant que ma fonction "interface" n'est pas finie
    Je t'ai proposé le bouton "exit"

  7. #7
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 89
    Points : 85
    Points
    85
    Par défaut
    Salut,
    En fait j'ai utilisé la fonction "waitforpushbutton"

    Merci pour votre aide!!

  8. #8
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    La même chose mais avec "wait(....)"

  9. #9
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    introuvable


    Mais par contre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >> doc waitfor
    >> uiwait

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 22/01/2006, 18h01
  2. Changement de valeur
    Par Anduriel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/11/2005, 00h31
  3. changement d'enregistrement via liste déroulante
    Par rahan_dave dans le forum Access
    Réponses: 3
    Dernier message: 13/10/2005, 18h47
  4. Réponses: 1
    Dernier message: 29/09/2005, 11h10
  5. Intercepter le changement de valeur d'une variable
    Par Captain_JS dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/01/2005, 08h04

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