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 :

Souci structurel de callbacks dans le GUI [Débutant]


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2012
    Messages : 16
    Par défaut Souci structurel de callbacks dans le GUI
    Bonjour tout le monde,

    Après avoir essayer de me débloquer tout seul toute la journée, je jette l'éponge et me permet de créer cette discussion. Voici mon problème.

    Désirant créer un GUI (en code manuel, apparemment le GUIDE n'est pas conseillé), mon programme est composé d'un fichier .m central, gérant le GUI et incluant des zones de texte éditables/boutons/etc...

    Ces boutons font donc appel à des callback, leurs entrées étant dans les zones de texte éditables. Le cœur du problème est que j'écris les fonctions appelées par les callbacks dans d'autres fichiers .m (car elles sont nombreuses, donc meilleure clarté et organisation, dans ma tête au moins!).

    Il m'est actuellement impossible d'arriver à lire mes inputs dans la fonction. Le callback arrive à lire cette fonction mais ensuite problème à l'intérieur de cette dernière. Voici le code correspondant:

    Fichier principal:
    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
    53
    54
    55
    56
    clear all
    clc
    close all
    global Total_car_weight Car_Balance
     
    %% Load the fixed parameters of the car.
    load Car_Data;
     
    %% Main window
    backcolor = [0.925 0.914 0.847];
    backcolor_saisie = [1 1 1];
     
    largeur_fen_prin = 1200;
    hauteur_fen_prin = 710;
     
    main_win = figure('Color',backcolor, ...
                      'Toolbar','none','menubar','none', ...
                      'Resize','on', ...
                      'Name', ([Set-up Optimization Tool']), ...
                      'PaperOrientation','Landscape','PaperType','A4', ...
                      'NumberTitle','Off', ...
                      'Position',[40 40 largeur_fen_prin hauteur_fen_prin]);
     
    %% Main panel
    pan_param = uipanel('Parent',main_win,'Position',[0 0 largeur_fen_prin hauteur_fen_prin],'BorderType','none');
     
    %% Static Inputs
    pos_x = 50;
    pos_y = hauteur_fen_prin*0.85;
     
    largeur_titre = 300;
    largeur_saisie = 100;
    hauteur_saisie = 20;
     
    uicontrol('Parent',pan_param,'Units','pixels', ...
              'Position',[pos_x pos_y largeur_saisie hauteur_saisie],...
              'String','Total Car Weight','Style','text','Tag','text36');
     
    pos_y = pos_y+0.2*hauteur_saisie;
    pos_x = pos_x + largeur_saisie;
    weight_box = uicontrol('Parent',pan_param,'Units','pixels', ...
                           'BackgroundColor',backcolor_saisie, ...
                           'Position',[pos_x pos_y largeur_saisie hauteur_saisie], ...
                           'String',Total_car_weight, ...
                           'Style','edit');
     
     
    %% Results on screen
    pos_x = 100;
    pos_y = pos_y-5*hauteur_saisie;
     
    Results = uicontrol('Parent',pan_param,'Units','Pixels', ...
                        'Position',[pos_x pos_y largeur_saisie hauteur_saisie], ...
                        'Style','push', ...
                        'String','Lancer Calcul', ...
                        'Callback', 'Test_Weight');
    Et la fonction appelée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function [F_Suspended_Wht] = Test_Weight()
     
    Tot_Wht = Total_car_weight;
    Car_Bal = get(carBal,'Value');
     
    F_Suspended_Wht=Tot_Wht*Car_Bal-F_Unsuspended_Wht;
     
    end
    Pour résumer:
    Je pense avoir un gros souci de compréhension de la récupération des entrées/sorties. Dès le début, je me demande comment récupérer correctement les valeurs entrées dans les Edit Text, puis ensuite les transférer dans la fonction pour les traiter, et finalement ré-afficher le résultat dans le GUI.

    Le code présenté peut ne plus avoir grand sens, après avoir essayer de multiples combinaisons durant la journée, désolé.

    Merci à ceux qui pourront éclairer ma lanterne.

    Cordialement.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ton problème est qu'une fonction callback ne doit jamais retourner de valeur.

    Citation Envoyé par rasti Voir le message
    Dès le début, je me demande comment récupérer correctement les valeurs entrées dans les Edit Text, puis ensuite les transférer dans la fonction pour les traiter, et finalement ré-afficher le résultat dans le GUI.
    Je t'invite pour cela à lire ce tutoriel qui présente 4 façons de faire.

    Remarque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    main_win = figure('Color',backcolor, ...
                      'Toolbar','none','menubar','none', ...
                      'Resize','on', ...
                      'Name', 'Set-up Optimization Tool', ... % parenthèses et crochets inutiles
                      'PaperOrientation','Landscape','PaperType','A4', ...
                      'NumberTitle','Off', ...
                      'Position',[40 40 largeur_fen_prin hauteur_fen_prin]);

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

Discussions similaires

  1. répartir les callbacks d'un GUI dans plusieurs fichiers
    Par jcanivet dans le forum Interfaces Graphiques
    Réponses: 9
    Dernier message: 02/02/2010, 16h31
  2. [MySQL] Soucis avec une insertion dans une base
    Par Ludo75 dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 27/01/2006, 14h03
  3. Soucis avec les Graphiques dans les états
    Par Chococrocq dans le forum IHM
    Réponses: 27
    Dernier message: 04/01/2006, 19h03
  4. Fonction callback dans une classe
    Par julian_ross dans le forum MFC
    Réponses: 8
    Dernier message: 02/03/2004, 11h42
  5. [MFC] Un callback dans des MFC ...
    Par elsargento dans le forum MFC
    Réponses: 3
    Dernier message: 18/02/2004, 16h04

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