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 :

Guides en parallèle


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 9
    Par défaut Guides en parallèle
    Bonjour à tous,

    Voilà, je suis en tyrain de synthétiser un projet à l'aide des interfaces graphiques de Matlab (version R2008b)

    J'ai une premiere GUI que je lance (guide1).
    Puis dans cette GUI je clique sur un push button, qui execute un fichier .m.
    Dans ce programme je veux éxécuter un nouveau guide : je donne donc le nom du deuxième guide : guide2 [function varargout = guide2(varargin)](j'ai mon fichier guide2.m qui est assococié à guide2.fig)
    Là la nouvelle fenêtre graphique s'ouvre. Dans cette fenetre je dois choisir pleins de parametres que j'aimerais récupérer dans mon programme principal. Le soucis étant que le le fichier guide2.m s'execute en entier mais ne me laisse pas "l'occasion" de choisir mes parametres.

    Je ne sais pas comment faire pour rémédier à ce problème, étant donné que je suis assez novice en matlab (j'en fait depuis une bonne année, mais je suis loin de tout maitriser)
    J'espère de plus avoir été assez précis dans ma requête !

    En vous remerciant d'avance,

    Underscore03

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Il faut utiliser les fonctions UIWAIT et UIRESUME

    Fait une petite recherche sur ce forum, il y a quelques exemples...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 9
    Par défaut
    Merci !

    J'ai donc mis un "uiwait" au début de mon fichier guide2.m

    et un "uiresume" quand j'actionne mon bouton "OK" sur mon interface graphique.
    Cependant, si par erreur je clique une deuxième fois sur ce bouton "OK" ou si je clique sur le bouton de fermeture de fenetre avant d'avoir cliqué une premiere fois sur "OK", ça plante...
    La seule chose à faire est de cliquer sur OK puis fermer.

    Y'aurait-il possibilité soit :
    - de désactiver le bouton de fermeture de fenetre graphique et de fermer celle-ci après avoir cliqué sur mon bouton "OK" (l'action sur ce bouton enregistrant mes valeurs courantes de parametres et fermant immédiatement la fenetre). J'ai essayé avec un close(guide2.fig) mais ça plante.
    Soit :
    - d'enlever mon bouton OK et de paramétrer le bouton de fermeture de fenetre graphique, tel que qu'il regroupe les actions précédemment décrites (mon "uiresume" se trouverait par là je présume...).

    Merci de votre aide

  4. #4
    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,

    Pour gérer le bouton de fermeture de fenêtre, il faut utiliser la propriété CloseRequestFcn de ta figure.

    Pour fermer ta fenêtre à partir de ton bouton, tu peux utiliser la fonction CLOSE mais celle-ci prend en argument le handle de ta figure et non le nom de fichier.

    Si tu pouvais mettre ton code, on pourrait t'aider plus efficacement...

    Bonne journée,
    Duf

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 9
    Par défaut
    Voilà le code :


    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    function varargout = GUIDE2(varargin)
    
    
    % Begin initialization code - DO NOT EDIT
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @GUIDE2_OpeningFcn, ...
                       'gui_OutputFcn',  @GUIDE2_OutputFcn, ...
                       'gui_LayoutFcn',  [] , ...
                       'gui_Callback',   []);
    if nargin && ischar(varargin{1})
        gui_State.gui_Callback = str2func(varargin{1});
    end
    
    if nargout
        [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
    else
        gui_mainfcn(gui_State, varargin{:});
    end
    % End initialization code - DO NOT EDIT
    
    
    % --- Executes just before GUIDE2 is made visible.
    function GUIDE2_OpeningFcn(hObject, eventdata, handles, varargin)
    
    % Choose default command line output for GUIDE2
    handles.output = hObject;
    
    % Update handles structure
    guidata(hObject, handles);
    
    %% UIWAIT and UIRESUME
    % UIWAIT makes GUIDE2 wait for user response (see UIRESUME)
    uiwait(handles.figure1);
    
    
    % --- Outputs from this function are returned to the command line.
    function varargout = GUIDE2_OutputFcn(hObject, eventdata, handles) 
    varargout{1} = handles.output;
    
    
    
    %% Parametres
    
    % mx
    function edit_mx_Callback(hObject, eventdata, handles)
    
    function edit_mx_CreateFcn(hObject, eventdata, handles)
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white');
    end
    
    % my
    function edit_my_Callback(hObject, eventdata, handles)
    
    function edit_my_CreateFcn(hObject, eventdata, handles)
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white');
    end
    
    % + AUTRES PARAMETRES...
    
    
    %% BOUTON OK
    function push_enregistrer_Callback(hObject, eventdata, handles)
    mx = str2num(get(handles.edit_mx,'String'));
    my = str2num(get(handles.edit_my,'String'));
    mz = str2num(get(handles.edit_mz,'String'));
    by = str2num(get(handles.edit_by,'String'));
    bz = str2num(get(handles.edit_bz,'String'));
    px = str2num(get(handles.edit_px,'String'));
    py = str2num(get(handles.edit_py,'String'));
    pz = str2num(get(handles.edit_pz,'String'));
    save P_G mx my mz by bz px py pz
    param = 1;
    uiresume(handles.figure1);
    % close(handles.figure1)
    
    
    %% BOUTON WINDOWS CLOSE REQUEST ??

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 9
    Par défaut
    Bonsoir, je reviens sur mon problème d'enregistrement et de fermeture de fenetre.
    J'ai décidé de faire enregistrement plus fermeture de fenetre en incorporant une fonction liée au bouton de fermeture.
    Voilà le code correspondant au bouton "fermer" (celui de la fenetre windows), de ma fenetre 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
    function figure1_CloseRequestFcn(hObject, eventdata, handles)
    q=questdlg('Quitter et enrgistrer les parametres ?', ...
                       'CONFIRMATION', ...
                       'Oui','Non');
     
    switch q
     
        case 'Oui'
            mx = str2num(get(handles.edit_mx,'String'));
            my = str2num(get(handles.edit_my,'String'));
            mz = str2num(get(handles.edit_mz,'String'));
            by = str2num(get(handles.edit_by,'String'));
            bz = str2num(get(handles.edit_bz,'String'));
            px = str2num(get(handles.edit_px,'String'));
            py = str2num(get(handles.edit_py,'String'));
            pz = str2num(get(handles.edit_pz,'String'));
            save P_G mx my mz by bz px py pz
            delete(gcf);
            uiresume(handles.figure1);
     
        case 'Non'
     
    end


    Voilà le message d'erreur quand je clique dessus :

    Warning: Default string does not match any
    button string name.
    ??? Error using ==> get
    Invalid handle object.

    Error in ==> uiresume at 23
    if ~strcmp (get(hFigDlg, 'Type'), 'figure')

    Error in ==>
    Mikron_UCP710>figure1_CloseRequestFcn at
    182
    uiresume(handles.figure1);

    Error in ==> gui_mainfcn at 96
    feval(varargin{:});

    Error in ==> Mikron_UCP710 at 42
    gui_mainfcn(gui_State, varargin{:});

    Error in ==>
    @(hObject,eventdata)Mikron_UCP710('figure1_CloseRequestFcn',hObject,eventdata,guidata(hObject))


    ??? Error using ==> waitfor
    Error while evaluating figure CloseRequestFcn

    ??? Attempt to reference field of
    non-structure array.

    Error in ==>
    Mikron_UCP710>Mikron_UCP710_OutputFcn at 67
    varargout{1} = handles.output;

    Error in ==> gui_mainfcn at 265
    feval(gui_State.gui_OutputFcn,
    gui_hFigure, [], gui_Handles);

    Error in ==> Mikron_UCP710 at 42
    gui_mainfcn(gui_State, varargin{:});

    Error in ==> Parametres_geom at 9
    Mikron_UCP710()

    Error in ==>
    Simu5X_COM>push_param_geom_Callback at 87
    handles=Parametres_geom(hObject,handles);

    Error in ==> gui_mainfcn at 96
    feval(varargin{:});

    Error in ==> Simu5X_COM at 42
    gui_mainfcn(gui_State, varargin{:});

    Error in ==>
    @(hObject,eventdata)Simu5X_COM('push_param_geom_Callback',hObject,eventdata,guidata(hObject))


    ??? Error while evaluating uicontrol Callback
    >>

    Je ne vois vraiment pas ce qui cloche

Discussions similaires

  1. Les distributions GNU/Linux et BSD + Guide pour choisir sa distribution Linux
    Par Community Management dans le forum Distributions
    Réponses: 1
    Dernier message: 23/09/2006, 18h20
  2. Gestion du port paralléle sous 2000
    Par kardex dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 05/01/2006, 19h47
  3. Transaction et traitements parallèles
    Par jfphan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/02/2004, 10h48
  4. Port Parallèle EPP ou ECP, hardware vs software ?
    Par TONIAPEL dans le forum Assembleur
    Réponses: 3
    Dernier message: 21/08/2003, 01h39
  5. guide des NURBS
    Par MrDuChnok dans le forum OpenGL
    Réponses: 7
    Dernier message: 10/01/2003, 14h29

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