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 :

mise à jour d'un graphe entre 2 fonctions [Débutant]


Sujet :

Interfaces Graphiques

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 25
    Points : 29
    Points
    29
    Par défaut mise à jour d'un graphe entre 2 fonctions
    Bonjour,


    Après avoir lu les tutoriels Matlab présents sur ce site, j'ai décidé de partir dès le début sur la programmation de GUI "à la main" au lieu d'utiliser GUIDE.

    Mais j'ai quelques problèmes pour mettre à jour un graphe depuis une autre fonction:

    Voici le code du GUI que j'ai écrit à la main:

    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
    function roots2
    
    % Création de l'objet Figure
    figure('units','pixels',...
        'position',[250 250 1000 700],...
        'color',[0.925 0.913 0.687],...
        'numbertitle','off',...
        'MenuBar','none',...
        'tag','main_gui',...
        'name','Roots2 (GUI écrit à la main)');
    
    % Création de l'objet Axes
    axes('units','normalized',...
        'tag','profil_graphe',...
        'position',[0.05 0.05 0.4 0.5]);
    
    % Création de l'objet Uicontrol Pushbutton Importer courbes
    uicontrol('style','pushbutton',...
        'tag','Importation',...
        'units','normalized',...
        'position',[0.1 0.8 0.1 0.04],...
        'string','Importation courbe',...
        'callback',@Import_roots);
    
    % Création de l'objet Uicontrol Pushbutton Quitter
    uicontrol('style','pushbutton',...
        'tag','quitter',...
        'units','normalized',...
        'position',[0.8 0.1 0.05 0.04],...
        'string','Quitter',...
        'callback','close all;');
    Sur pression du bouton "Importation courbe", je fais appel à une fonction présente dans le même fichier *.m et dans laquelle j'execute la commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    polar(handles.profil_graphe,gr_theta,gr_radius);
    dans le but de mettre à jour l'objet Axes (tag: profil_graphe) créé dans la fonction principale.

    J'obtiens l'erreur suivante:

    ??? Undefined variable "handles" or class "handles.profil_graphe".

    Error in ==> roots2>Import_roots at 75
    polar(handles.profil_graphe,gr_theta,gr_radius);

    ??? Error while evaluating uicontrol Callback
    Qu'est-ce que j'ai oublié de faire ?
    Par avance, merci

  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 830
    Points
    14 830
    Par défaut
    Il faut que tu passes la structure handles entre tes différentes fonctions (pour cela plusieurs méthodes que tu as du voir dans les tutoriels : GUIDATA/GUIHANDLES, Nested functions, SET/GETAPPADATA).
    Dans le code que tu nous présentes tu ne crées même pas cette structure
    Vu que tu as mis des Tags à tous tes objets le plus simples serait d'utiliser GUIHANDLES pour créer la structure.
    Une fois la structure créée tu peux choisir la méthode que tu veux pour la passer à tes sous-fonctions.
    Règles du Forum

    Adepte de la maïeutique

  3. #3
    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 : 40
    Localisation : France

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

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

    Citation Envoyé par Luis Vieira da Silva Voir le message
    Qu'est-ce que j'ai oublié de faire ?
    Peut-être de récupérer la structure handles ou de la mettre à jour mais il nous faudrait un peu plus de code pour t'aider (la fonction Import_roots par exemple).

    Une solution serait d'avoir au début de ta fonction Import_roots:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    handles = guihandles(gcf);
    Bonne journée,
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 25
    Points : 29
    Points
    29
    Par défaut Merci
    Merci à tous les 2 pour votre aide.

    J'ai utilisé GUIHANDLES comme expliqué dans le tutoriel et cela marche correctement.

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

Discussions similaires

  1. Mise à jour conditionnelle de liaisons entre 3 fichiers
    Par drthodt dans le forum Macros et VBA Excel
    Réponses: 68
    Dernier message: 24/09/2007, 13h22
  2. Réponses: 15
    Dernier message: 02/05/2007, 18h04
  3. mise à jour massive des tables entre 2 bases oracle
    Par rihojaniero dans le forum Oracle
    Réponses: 1
    Dernier message: 13/10/2006, 08h22
  4. [JSP] Mise à jour d'un menu déroulant en fonction d'un autre
    Par Lady_jade dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 12/12/2005, 13h32
  5. mise à jour automatique de champs entre 2 tables
    Par romdyane dans le forum Access
    Réponses: 5
    Dernier message: 11/10/2005, 18h51

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