Matlab - Ayuda con GUI

 
Vista:

Ayuda con GUI

Publicado por Noni (5 intervenciones) el 15/07/2009 12:44:04
Hola, necesito ayuda para mi proyecto fin de carrera.

El tema es que tengo una función1 que a su ver utiliza una función 2 (ambas subrutinas .m).

Pues en una de las líneas de la función 2 necesito llamar a una GUI para para saber cómo debe continuar esta función (en esta GUI tendré dos botones para elegir, y quiero que con cada uno de ellos la función 2 continúe de una forma distinta).

Es decir, que necesito el resultado de lo que marque al aparecer la GUI para volver a mi función 2 y continuar.

No sé si me he explicado bien, porque es un poco complejo, pero es que no tengo ni idea de cómo hacer esto.

¡¡¡¡¡¡¡¡¡¡¡AYUDADME, POR FAVOR!!!!!!!!!!!!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con GUI

Publicado por Enrique Marín (3 intervenciones) el 17/07/2009 13:18:44
Espero poderte solucionar la duda:

Primero de todo, yo recomiendo que cuando hagas una gui, no uses el gui-editor, es decir que solo eligas realizar el .fig, ya que el gui-editor (me refiero al m-file que se te genera) lo podemos hacer nosotros.

Imaginemos tu funcion1

function funcion1

...
...
...
...
[varargout] = funcion2(varargin);

Ahí hacemos la función2

function [varargout] = funcion2(varargin)

...
...
...
(Ahora necesitamos abrir la gui)
open(Tu_Gui.fig)

Ahora el gcf es Tu_Gui. Imaginemos que Tu_Gui tiene dos pushbuttons, cada uno con distinto tag (boton1 y boton2). El campo Tag lo encontrarás en el properties inspector de cada uno. Pues después de ese open, realizas lo siguiente:

set(findobj(gcf,'Tag','boton1'),'Callback','funcion_caso1');
set(findobj(gcf,'Tag','boton2'),'Callback','funcion_caso2');

Con lo que si pulsamos el boton1 se seguirá con la rutina funcion_caso1.m y si le damos al boton2 seguirá con la rutina funcion_caso2.

Si luego quieres recuperar datos de esas funciones, lo más fácil es que generes una estructura dentro de cada funcion_caso. Por ejemplo

function funcion_caso1

Str.A = 456464; por ejemplo
Str.B = 8848;

set(findobj(gcf,'Tag','boton1'),'UserData',Str);

Y cuando quieras acceder a ella desde otros puntos de la aplicación tendrás que poner

Str = get(findobj(gcf,'Tag','boton1'),'UserData');

Y así lo obtendrlas.

Si tienes más dudas o no te sale [email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar