Matlab - duda con GUI

 
Vista:

duda con GUI

Publicado por rosa (11 intervenciones) el 29/04/2009 18:21:27
hola,

supongo que la duda que tengo es muy tonta, pero al no dominar ni el ingles ni las funciones de MATLAB, me resulta muy dificil contestarmela yo misma y eso que he intentado mil y una cosas.

Bueno, mi duda es la siguiente: Empiezo mi programa con una GUI que se queda abierta durante el tiempo que dura la simulacion. Al terminar mi programa pregunto si quiere volver a simular de nuevo, y en caso afirmativo, me gustaria que abriese la GUI que ya tengo abierta, pero aun despues de haber intentado un monton de historias no lo consigo.

esto es lo que tengo:

function data=Start_sim(Action,arg1)

if ~nargin
clear all;
clc;
Action = 'init';

end;

switch Action
case 'init'
sim_gui;
case 'Simulate'
Y_st = str2num(get(arg1.Year_Start_edit,'String'));
M_st = str2num(get(arg1.Month_Start_edit,'String'));
D_st = str2num(get(arg1.Day_Start_edit,'String'));
h_st = str2num(get(arg1.hour_Start_edit,'String'));
m_st = str2num(get(arg1.min_Start_edit,'String'));
s_st = str2num(get(arg1.sec_Start_edit,'String'));

Y_en = str2num(get(arg1.Year_End_edit,'String'));
M_en = str2num(get(arg1.Month_End_edit,'String'));
D_en = str2num(get(arg1.Day_End_edit,'String'));
h_en = str2num(get(arg1.hour_End_edit,'String'));
m_en = str2num(get(arg1.min_End_edit,'String'));
s_en = str2num(get(arg1.sec_End_edit,'String'));

Freq = str2num(get(arg1.Hz_edit,'String'));

chekbox_sim = get(arg1.SeeSimulation_chekbox,'Value');

sat_main('Simulate',Y_st,M_st,D_st,h_st,m_st,s_st,Y_en,M_en,D_en,h_en,m_en,s_en,Freq,chekbox_sim);

case 'continue'
answer=questdlg('Do you want to simulate again?','Simulation','Yes','No','No');
switch answer
case 'No'
h = msgbox('Simulation ist beendet');
case 'Yes'
sim_gui; %si contesto que quiero simular de nuevo,
end
otherwise
error('Function doesn´t exit');

end


%os pongo solo el principio de la funcion, el resto es simplemente la creacion del menu

function sim_gui
%warning off
if isempty(findobj(0,'Tag','simulation_gui'))
fighandle = figure('Name','simulation_gui','Tag','simulation_gui');
else
%AQUI ME GUSTARIA QUE ME ABRIESE LA GUI QUE YA TENGO CREADA;EN LUGAR DE QUE ME MANDASE EL MENSAJE DE ERROR DE QUE YA TENGO UNA
errordlg('There is already a simulation window open')
return;
end;

espero que sepais algo, porque yo no encuentro nada factible en la ayuda de matlab, y no se como formular la pregunta en otro idioma. Gracias
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:duda con GUI

Publicado por Kike (304 intervenciones) el 02/05/2009 21:44:41
Creo que sería mejor que colocaras en tu GUI un pushbutton de Reset para volver a simular. Al presionarlo se reiniciarían todos los elementos de la GUI a los valores iniciales, los cuales podrías almacenarlos en un cell array o una estructura que sea variable global.
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

RE:duda con GUI

Publicado por Rosa (11 intervenciones) el 03/05/2009 00:32:29
Perdon por no haber escrito antes que tenia solucionado mi problema.
Al final no solucioné de la siguiente forma...

function sim_gui

if isempty(findobj(0,'Tag','simulation_gui'))
fighandle = figure('Name','simulation_gui','Tag','simulation_gui');
else
figure(findobj('Tag','simulation_gui');
return;
end;

A lo mejor no es la mejor forma pero me vale para lo que quiero, ya que el programa en realidad es en C y solo hago una pequeña representacion grafica de los resultados. De todas formas estudiaré tu idea...muchas gracias por contestar.
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