Sei sulla pagina 1di 6

Construir una interfaz grfica de usuario (GUI) en MATLAB. Parte 1 de 2.

December 31st, 2009 Posted in Informtica By 640kbits Write comment

En este post tratar de explicar como crear una sencilla interfaz grfica de usuario para multiplicar 2 nmeros empleando MATLAB , con ello pretendo exponer los conceptos bsicos de la construccin de GUIs en MATLAB. El primer paso es lanzar la herramienta guide desde la consola de comandos de MATLAB:

En el cuadro de dilogo siguiente escoger interfaz de usuario en blanco (Blank GUI):

Se nos mostrar algo parecido a esto:

Crear la apariencia para nuestra aplicacin es muy sencillo usando el editor WYSIWYG de arriba (WhatYouSeeIfWhatYouGet). Slo tenemos que arrastrar aquellos componentes que vayamos a utilizar. Para este sencillo ejemplo son necesarios:

2 componentes de texto editables. 3 componentes de texto esttico. 1 pushbutton.

Ahora es el momento de modificar las propiedades de los componentes aadidos, empezaremos modificando los componentes de texto esttico (doble click en el componente) , cambiando el texto que muestran por : x y = ; y modificando el tamao de dicho texto a 24 unidades:

Para el tercer componente de texto esttico, modificamos el tamao de la letra a 24, el contenido (String) mostrado a 0 y tambin cambiamos la etiqueta (Tag) que identifica al componente, llamndolo, por ejemplo, producto.

El siguiente paso es modificar las propiedades de los componentes de texto editables (multiplicadores) de nuestra sencilla aplicacin, cambiando el valor de String a 0 y el de Tag a m1 y a m2 , respectivamente para el segundo multiplicador:

Por ltimo debemos cambiar las propiedades del Pushbutton, estableciendo los atributos String y Tag con el valor Multiplica. Cambiando adems el tamao estndar del botn , deberamos obtener algo parecido a la captura de pantalla siguiente:

Una vez hemos construida la interfaz de la aplicacin guardamos el proyecto, con la opcin Save as, lo que genera dos archivos *.fig y *.m . El *.fig contiene la interfaz propiamente dicha y el archivo *.m contiene el cdigo o lgica para construir y gobernar dicha interfaz.

Construir una interfaz grfica de usuario (GUI) en MATLAB. Parte 2 de 2.


December 31st, 2009 Posted in Informtica By 640kbits Write comment

En la segunda parte de este post, describir como implementar la lgica asociada a la interfaz, programando la funciones callbacks , que se ejecutan como respuesta a los eventos lanzados por los componentes (por ejemplo el evento de hacer click sobre el botn de nuestra GUI). El primer paso es abrir el archivo *.m que se gener con el editor visual de interfaces que empleamos en el post anterior , en el editor de cdigo debemos hacer click sobre el icono , mostrndose en pantalla la lista de funciones declaradas en el archivo *.m:

Pulsamos sobre la funcin correspondiente a la primera caja de texto editable: m1_Callback() y aadimos el siguiente cdigo (despus realizamos el mismo procedimiento con la segunda caja de texto editable):
input = str2num(get(hObject,'String')); if (isempty(input)) set(hObject,'String','0') end guidata(hObject, handles);

El cdigo anterior, simplemente, comprueba que la entrada de la caja de texto est bien definida (que se trata de un nmero). La funcin guidata() , se aade al final de cada rutina callback() y se encarga de actualizar las estructuras handles, con informacin de los componentes grficos. El paso siguiente es aadir cdigo a la rutina multiplica_Callback() del botn definido en la interfaz:
a = get(handles.m1,'String'); b = get(handles.m2,'String');

Como puede imaginarse , estas dos sentencias asignan a las variables a y b los valores almacenados por las dos cajas de texto editables. Las variables a y b guardan cadenas de texto (Strings) que no pueden multiplicarse sin hacer previamente una conversin explcita a nmero:
total= (str2num(a) * str2num(b));

Una vez realizado el producto debemos convertir de nuevo a cadena de texto este resultado, para poder asignrselo a la caja de texto esttico que guarda el producto de los dos nmeros.
c = num2str(total);

La sentencia escrita abajo actualiza el valor de la caja de texto esttica producto con el valor guardado en c:
set(handles.producto,'String',c);

Para terminar actualizamos la estructura de handles:


guidata(hObject, handles);

Con esta ltima sentencia terminamos el programa, para ejecutarlo basta con teclear el nombre de la aplicacin sobre la consola de MATLAB, ajustando previamente el path para que MATLAB pueda localizar los archivos *.fig y *.m de nuestro SW.

a = get(handles.m1,'String'); b = get(handles.m2,'String'); c = get(handles.m3,'string'); total1= ((-b+ sqrt((b^2)-4*a*c))/(2*a)); d = num2str(total1); set(handles.ra1,'String',d); total2= ((-b- sqrt((b^2)-4*a*c))/(2*a)); e = num2str(total2); set(handles.ra2,'String',e); guidata(hObject, handles);

Potrebbero piacerti anche