2010-12-06 49 views
0

J'ai deux figues dans deux fichiers différents. En cliquant sur un bouton sur la première fig, je veux montrer le second ... comment faire cela? c'est possible?Deux chiffres dans deux fichiers différents - comment exécuter la première figue de la seconde?

Si OUI que d'échanger des données entre deux chiffres?

+0

Par 'files' vous voulez dire que les figures sont sauvegardées sur disque, mais pas ouvertes dans Matlab, ou sont-elles ouvertes? Est-ce que vous créez les figues? De plus, qu'entendez-vous par «échange de données entre les chiffres»? –

+0

mmm ... J'ai deux chiffres chargés dans MATLAB. oui, je crée ces deux figues. Je veux dire: comment obtenir par exemple de la figure 2 une chaîne de texte de la figure 1? – AndrewShmig

Répondre

5

Il existe plusieurs façons de share data among GUIs. En général, vous devez d'une manière ou d'une autre rendre le ou les handle (s) graphique (s) d'une interface graphique disponible à l'autre interface graphique pour pouvoir obtenir/définir certaines propriétés d'objet. Voici un exemple très simple qui implique une interface graphique en créant un autre et passer une poignée d'objet:

function gui_one 

    hFigure = figure('Pos',[200 200 120 70],... %# Make a new figure 
        'MenuBar','none'); 
    hEdit = uicontrol('Style','edit',...   %# Make an editable text box 
        'Parent',hFigure,... 
        'Pos',[10 45 100 15]); 
    hButton = uicontrol('Style','push',...  %# Make a push button 
         'Parent',hFigure,... 
         'Pos',[10 10 100 25],... 
         'String','Open new figure',... 
         'Callback',@open_gui_two); 

%#---Nested functions below--- 
    function open_gui_two(hObject,eventData) 
    gui_two(hEdit); %# Pass handle of editable text box to gui_two 
    end 

end 

%#---Subfunctions below--- 
function gui_two(hEdit) 

    displayStr = get(hEdit,'String'); %# Get the editable text from gui_one 
    set(hEdit,'String','');   %# Clear the editable text from gui_one 
    hFigure = figure('Pos',[400 200 120 70],... %# Make a new figure 
        'MenuBar','none'); 
    hText = uicontrol('Style','text',...   %# Make a static text box 
        'Parent',hFigure,... 
        'Pos',[10 27 100 15],... 
        'String',displayStr); 

end 

Après avoir enregistré le code ci-dessus à un m-fichier, vous pouvez créer la première interface graphique en tapant gui_one. Vous verrez une petite fenêtre avec une zone de texte modifiable et un bouton. Si vous tapez quelque chose dans la zone de texte, appuyez sur le bouton, une deuxième interface graphique apparaîtra à côté de lui. Cette deuxième interface graphique utilise la poignée de la zone de texte modifiable qui lui est transmise depuis la première interface graphique pour obtenir la chaîne de texte, l'afficher et effacer la chaîne de la première interface graphique.

Ceci est juste un exemple simple. Pour plus d'informations sur la programmation de GUI dans MATLAB, jetez un oeil à la MathWorks online documentation ainsi que les liens dans les réponses à this SO question.