Programación Específica > Matlab
Como Definir Handles Programando En Gui
manguztap:
Hola a todos y de antemano muchas gracias.
Empezare por comentar que estoy realizando un programa por mi cuenta (una simple sumadora) pues recientemente he empezado a programar en Matlab y la verdad ya he investigado bastante un problema que se me ha presentado, lo describire a continuacion:
Estoy programando la GUI, no utilizo GUIDE.
He generado una figura, tres EDIT text (edit1, edit2 y edit3),y un pushbutton(el cual al presionarlo realiza la suma).
el usuario inserta el primer valor en edit1 y genero su callback, hago lo mismo con edit2 el cual te da el segundo valor, luego al presionar el pushbutton me deberia de dar el resultado de la suma de edit1 + edit2 y lo inserto en edit3 el cual te muestra el resultado, Mi problema es que no se como guardar los valores obtenidos de edit1 y edit2 para luego mandarlos llamar en la funcion de edit3 y poder sumarlos, en pocas palabras no se como guardar el valor de edit1 y edit2 en HANDLES. abajo les dejo mi programa hasta ahora, si pueden copienlo, peguenlo y corranlo para que se den cuenta de mi problema... por favor ayuda!!!!!!
function varargout = sumadora(varargin)
clear,clc,close all;
%%%%%%%% Figura %%%%%%%%
f=figure('visible','on','name','Manuel Guzman','position',[170 150 250 150]);
set(f,'MenuBar','none')
movegui(f,'center');
handles=guihandles(f);
guidata(f,handles);
%%%%%%%%%%%%%%%%%% Creando Cosmetico Visual
x1=uicontrol(f,'style','edit','string','Valor A','position',[20 75 50 20],...
'callback',{@valor1}); % Primer valor a ingresar
add=uicontrol(f,'style','text','string','+','position',[75 75 18 18]); % +
x2=uicontrol(f,'style','edit','string','Valor B','position',[98 75 50 20],...
'callback',{@valor2}); % Segundo Valor a ingresar
res=uicontrol(f,'style','pushbutton','string','Resultado','position',[90 110 70 30],...
'callback',{@Resultado}); %Respuesta (Push button)
eq=uicontrol(f,'style','text','string','=','position',[153 75 18 18]); % =
x=uicontrol(f,'style','edit','string','','position',[175 75 50 20]); %Resultado
c=uicontrol(f,'style','pushbutton','string','Cerrar','position',[10 110 70 30],...
'Callback',{@Cerrar}); % cerrar programa
%%%%%%%%%%%%%%%%%% Colores, Word sizes entre otros
set(x1,'BackgroundColor','white');
set(x2,'BackgroundColor','white');
set(x,'BackgroundColor','white');
set(res,'FontSize',9);
set(res,'Fontweight','bold')
%%%%%%%%% BackGround color para igualar el color con los buttons
db = get(0,'defaultUicontrolBackgroundColor');
set(f,'Color',db);
%%%%%%%% Cerrar
function Cerrar(hObject,eventdata)
close(gcbf)
f2=figure('visible','on','position',[200 250 400 100]);
set(f2,'MenuBar','none');
x=uicontrol(f2,'style','text','string','ADIOS COBARDON','position',[26 22 350 50]);
set(x,'FontSize',28);
set(x,'ForeGroundColor','red');
end
%%%%%%%%%%% Valor 1 = X1 %%%%%%%%%%%%
function valor1(hObject,eventdata,handles)
V1=str2double(get(hObject,'string'));
if isnan(V1)
errordlg('You must enter a numeric value','Bad Input','modal')
end
handles.valor1=V1;
guidata(hObject,handles);
end
%%%%%%%%%%% Valor 2 = X2 %%%%%%%%%%%%
function valor2(hObject,eventdata,handles)
V2=str2double(get(hObject,'string'));
if isnan(V2)
errordlg('You must enter a numeric value','Bad Input','modal')
end
handles.valor2=V2;
guidata(hObject,handles);
end
%%%%%%%%%%% Resultado %%%%%%%%%%%%
function Resultado(hObject,eventdata,handles)
A=handles.valor1; %%%%%% AQUI ESTA EL PROBLEMA
B=handles.valor2;
r=A+B;
set(x,'string',str2double®)
guidata(gcbo,handles);
end
end
fa61an:
tu estas almacenando bien los datos
--- Citar ---Funtion valor1
V1=str2double(get(hObject,'string')); % Transformar valor ingresado y convertido a double
handles.valor1=V1; % Almacenar en puntero
guidata(hObject,handles); % Salvar datos
--- Fin de la cita ---
inténtalo Cambiando el edit de mostrar resultado por un Static Text entonces te quedaría así :
2 Edit_text, un Static_text y un pushbutton
Entonces los códigos de los dos edit están bien solo le debes poner este código al pushbutton así
--- Código: Text --- function pushbutton1_Callback(hObject, eventdata,handles)A=handles.valor1;B=handles.valor2;r=A+B;set(handles.text3,'String',r);
En donde handles.text3. apunta al componente Static text3.
Ademas veo que en tu código pones "x" y ni siquiera has creado esa variable
allisap:
saludos :hola:
busca en la ayuda el comando get con este puedes obtener los valores de un control
bye
manguztap:
MUCHAS GRACIAS A TODOS MI PROBLEMA SE A RESUELTO, AHORA LE SUBIRE DE NIVEL.
GGGRRRAAACCCIIIAAASSS!!!!!!!!!!!!!!!!
fa61an:
He notado que la gente de este foro, muchas veces se limita a pedir algo y cuando lo resuelve listo gracias, pero no indica como resolvió el problema..
Ojala publique como lo resolvio
Navegación
[#] Página Siguiente
Ir a la versión completa