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éterminer la valeur d'une check box [Débutant]


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 40
    Par défaut Déterminer la valeur d'une check box
    !!! La raison de cette erreur a été trouvé (cf mon troisième post et après), il s'agit surtout maintenant d'y trouver une solution.

    "Ancien" problème:
    Salut!

    Je dois faire une interface graphique, et j'aimerai que suite à une check box (cochée ou non) le programme fasse un calcul:

    J'ai mis une checkbox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    % --- Executes on button press in picmax.
    function picmax_Callback(hObject, eventdata, handles)
    % hObject    handle to picmax (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    et dans mon programme principal (qui est en fait la fonction correspondant au bouton qui permet à l'utilisateur de lancer le programme):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function lancer_Callback(hObject, eventdata, handles)
    %calcul du plus grand pic du signal
     
    if (get(handles.checkbox3,'Value') == 1)
    picmax=1;
    printf('amplitude max=', picmax)
    end
    Je regarde avec get la valeur de la checkbox pour exécuter certaines lignes dans certaines conditions.
    Seulement il me met l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ??? Invalid handle object.
     
    Error in ==> interface>lancer_Callback at 569
    if (get(handles.checkbox3,'Value') == 1)
     
    Error in ==> gui_mainfcn at 75
            feval(varargin{:});
     
    Error in ==> interface at 42
        gui_mainfcn(gui_State, varargin{:});
     
    ??? Error while evaluating uicontrol Callback.
    Qu'est ce qui ne va pas? Qu'est ce que je pourrais faire pour le faire marcher?

    Merci d'avance!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 32
    Par défaut
    Salut,

    Si j'ai bien compris, ta checkbox s'appelle "picmax" (ou plutôt son Tag est "picmax")? Donc il faudrait remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (get(handles.checkbox3,'Value') == 1)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (get(handles.picmax,'Value') == 1)
    Je pense que ça devrait régler ton problème. En effet, il faut faire attention au changement de Tag car celui par défaut n'est pas conservé si tu le changes!

    Bon dimanche,

    N.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 40
    Par défaut
    J'ai changé avec picmax à la place:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function lancer_Callback(hObject, eventdata, handles)
    %calcul du plus grand pic du signal
     
    if (get(handles.picmax,'Value') == 1)
    picmax=1;
    printf('amplitude max=', picmax)
    end
    avec toujours au dessus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    % --- Executes on button press in picmax.
    function picmax_Callback(hObject, eventdata, handles)
    % hObject    handle to picmax (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    picmax étant bien le Tag de cette checkbox, mais l'erreur est la même que dans mon premier message (à picmax près bien sur).

    Je suppose que ça vient de la même erreur quand j'essaie d'afficher des résultats dans un static text:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(handles.resultats,'string',resultat)
    il me signale invalide handle object.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 40
    Par défaut
    Je pense avoir trouvé ce qui ne va pas, mais je ne sais pas du tout comment le régler:
    j'utilise un bouton que l'utilisateur doit utiliser pour lancer le programme, donc une partie de mon programme se trouve dans la fonction de ce bouton push. Seulement une fois le programme lancé, que j'ai appuyé sur ce bouton et que donc je me trouve dans la fonction "lancer" où se trouve mon programme "principal" en quelques sortes, l'interface utilisateur "disparait" et je n'ai accès à aucune autre fonction...
    Dois je en déduire qu'il est impossible, lorsque l'on se trouve dans une fonction, de faire appel à une autre fonction?
    Si oui qu'est ce que je pourrais faire?

    Merci pour vos réponses, j'espère qu'il y a un moyen de faire ça sinon me revoilà bloquée completement une énième fois.

  5. #5
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Poste ton projet complet sur http://flyupload.com/ et fait une archive .rar avec les fichier .fig et .m pour qu'on puisse t'aider et paste ici le premier lien apres l'upload.


    Bonne chance,

    Michel

  6. #6
    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 : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Bonjour,

    Je suis pas sur d'avoir tout compris à ton problème mais de ce que je comprends, tu veux modifier l'interface à partir d'une fonction extérieure?

    Si c'est bien çà, c'est possible en utilisant par exemple la fonction FINDOBJ par contre ce n'est pas forcément une bonne idée, en règle générale, on essaye de découpler la gestion de l'interface des fonctions de calcul donc on effectue toutes les opérations sur l'interface dans le même fichier.

    Bonne apm,
    Duf

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 40
    Par défaut
    Je sais pas comment je fais pour toujours m'exprimer comme un pied.

    Je vais essayé d'être plus clair.

    Je lance mon programme avec un push button sur l'interface utilisateur, qui va donc être avec exécuter la fonction callback de ce bouton. C'est dans cette fonction que mon programme se trouve, vu que c'est lui que je dois exécuter. Je vais l'appeler la "fonction principale".

    Sur l'interface, l'utilisateur a le choix de calculer différents paramètres, qu'ils sélectionnent avant de lancer le programme grâce à des checkbox.
    Ce que j'aimerai faire c'est donc récupérer les "valeurs" de ces checkbox, pour déterminer dans la "fonction principale" quels paramètres sont à calculer.

    Et là est mon problème: la "fonction principale" étant une fonction, elle n'arrive pas à trouver la valeur des autres fonctions (checkbox). Je précise que TOUT se trouve dans un seul "*.m" avec bien sur le *.fig correspondant.


    Voilà les liens:
    Je doute que vous compreniez grand chose à ce programme étant donné qu'une partie a été faite par un étudiant, et certaines autres par moi, il n'est franchement pas intuitif. On y trouve au moins les différentes fonctions des contrôles de mon interface. J'ai tout mis dans un .zip

    http://flyupload.flyupload.com/?fid=653037624

    Je n'ai pas exactement compris à quoi servait le findobj, je vais essayer de regarder dans l'aide, même si je capte pas tout en anglais.

    Merci et bon aprem à vous aussi!

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 40
    Par défaut
    C'est bon les gens, j'ai fini par trouver, et vous n'auriez jamais pu trouver à moins d'une intuition subite et "géniale".

    Il y avait en fait au début du "programme principal" un close all qui trainait... du coup à peine exécuté mon programme fermait également mon interface utilisateur, et donc toutes les valeurs des fonctions etc qui vont avec: plus de check box ou de texte statique....
    Il faudrait que je trouve un moyen pour fermer toutes mes courbes, figures etc sans fermer l'interface.
    et dire que j'ai passé ma journée à ça .....><


    Enfin bon j'ai fini par trouver, je peux avancer.
    Merci tout le monde Duf, mihaispr et weedcat!

  9. #9
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Citation Envoyé par Angel30 Voir le message
    C'est bon les gens, j'ai fini par trouver, et vous n'auriez jamais pu trouver à moins d'une intuition subite et "géniale".

    Il y avait en fait au début du "programme principal" un close all qui trainait... du coup à peine exécuté mon programme fermait également mon interface utilisateur, et donc toutes les valeurs des fonctions etc qui vont avec: plus de check box ou de texte statique....
    Il faudrait que je trouve un moyen pour fermer toutes mes courbes, figures etc sans fermer l'interface.
    et dire que j'ai passé ma journée à ça .....><


    Enfin bon j'ai fini par trouver, je peux avancer.
    Merci tout le monde Duf, mihaispr et weedcat!
    Oui tu as raison.

    Il est bien avant que tu fais une script de mettre ca:

    %Debut de ton script mets ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    clc;
    close all;
    clear all;

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 01/07/2008, 15h12
  2. Agrandir une check box
    Par tchoimars dans le forum Windows Forms
    Réponses: 8
    Dernier message: 01/04/2008, 17h00
  3. Problème de valeur d'une check box
    Par guiguisb dans le forum VBA Access
    Réponses: 3
    Dernier message: 16/09/2007, 13h18
  4. récupération d'une check box
    Par marie4449 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 24/05/2006, 14h28
  5. valeur d'une list box -> récupérer l'id
    Par Mucsy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/05/2006, 17h56

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