Programación Específica > Matlab

 Como Definir Handles Programando En Gui

(1/2) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa