Professional Documents
Culture Documents
CAPTULO 3
Pgina 56
El desarrollo de GUIs se realiza en dos etapas: Diseo de los componentes (controles, mens y ejes) que formarn el GUI. Codificacin de la respuesta de cada uno de los componentes ante la interaccin del usuario.
Pgina 57
Otra de ellas consiste en buscar en el Launch Pad la opcin referente a Matlab, hacer clic en ella, con lo que Matlab despliega las opciones que contiene, entre las que se encuentra la opcin Guide (GUI Builder), tal como se muestra en la figura:
Pgina 58
Donde se presentan las siguientes opciones: a) Blank GUI (Default) La opcin de interfaz grfica de usuario en blanco (viene predeterminada), nos presenta un formulario nuevo, en el cual podemos disear nuestro programa. b) GUI with Uicontrols Esta opcin presenta un ejemplo en el cual se calcula la masa, dada la densidad y el volumen, en alguno de los dos sistemas de unidades. Podemos ejecutar este ejemplo y obtener resultados. c) GUI with Axes and Menu Esta opcin es otro ejemplo el cual contiene el men File con las opciones Open, Print y Close. En el formulario tiene un Popup menu, un push button y un objeto Axes, podemos ejecutar el programa eligiendo alguna de las seis opciones que se encuentran en el men despegable y haciendo click en el botn de comando.
Pgina 59
Los componentes principales de GUIDE son: Barra de Mens: Aqu se encuentran las funciones elementales de Edicin de GUIs. Paleta de Componentes (component Palette): Aqu se encuentran los uicontrols, estos componentes permiten seleccionar los controles (objetos) que son los que se muestran en la figura.
La Barra de Herramientas: En ella se encuentran los siguientes botones Botn de ejecucin (Run button): Al presionarse crea la figura de la interfaz diseada en el Layout rea.
Alineacin de Componentes (Alignment tool): esta opcin permite alinear los componentes que se encuentra en el rea de trabajo (Layout rea) de manera personalizada.
Pgina 60
Navegador de Objetos (Object Browser): Muestra todos los objetos que se encuentran en la figura (en forma de rbol) y a travs del Object Browser se pueden seleccionar los objetos.
Editor de Mens (Men Editor): El redactor de Men crea mens de ventana y mens de contexto.
Pgina 61
Bsicamente solo se necesitan entender cinco comandos para poder describir una GUI: uimenu, uicontrol, get, set y axes. No obstante, lo que hace relativamente complicado a estos comandos es el gran nmero de formas de uso que tienen. Es imposible describir todos los tipos de situaciones, pues requiere demasiado espacio y sera muy laborioso leerlo. Por tanto, solo trataremos de explicar los elementos bsicos de una GUI.
Pgina 62
Realizando llamadas a funciones de dibujo y visualizacin. MATLAB muestra todas las grficas en un tipo de ventanas especiales conocidas como figures, en las que se sitan unos ejes de coordenadas. Estos ejes son los que proporcionan el sistema de coordenadas necesario para realizar la visualizacin de los datos. Trabajando a "bajo nivel", haciendo las llamadas necesarias a funciones de MATLAB para ir creando los objetos grficos que sean necesarios para hacer la visualizacin. A este nivel se realizarn mltiples llamadas a la funcin set y otras similares para establecer las propiedades de los distintos objetos grficos que se vayan creando o para modificarlas durante la ejecucin del programa. Este modo de trabajar es muy similar al uso tradicional de una biblioteca grfica que se puede hacer en un lenguaje de programacin convencional. Empleando el GUIDE, el entorno de desarrollo de GUIs, que nos permitir definir todos los componentes grficos que deseemos, establecer sus propiedades e incorporar cdigo de respuesta a cada una de las acciones del usuario a travs de una herramienta grfica de cmodo manejo. Adems, tiene la ventaja de que en cualquier momento podremos elegir si deseamos trabajar a alto o bajo nivel, pudiendo acceder al cdigo asociado a travs del editor de MATLAB.
Como podemos ver, en cualquiera de estos tres casos estamos haciendo uso del sistema de objetos grficos de MATLAB. Estos objetos grficos son los elementos bsicos empleados por MATLAB para visualizar datos, y estn organizados en una jerarqua como la de la siguiente figura, en la que se muestran los tipos de objetos grficos empleados ms frecuentemente:
Pgina 63
Como hemos dicho, puede haber varias ventanas abiertas, pero slo una de ellas es la ventana activa en cada momento. De la misma forma, una ventana puede contener varios ejes de coordenadas, pero slo unos son los ejes activos. El objeto activo ser el ltimo objeto creado o sobre el que se haya hecho clic con el ratn. Podemos obtener los identificadores de la ventana, los ejes y el objeto activos con las rdenes: gcf: devuelve un entero, el identificador de la ventana activa. gca: devuelve el identificador de los ejes activos. gco: devuelve el identificador del objeto activo.
La principal utilidad que tiene conocer los identificadores de los objetos grficos es que a travs de ellos podremos modificar las propiedades de los objetos o incluso borrarlos: set (id): muestra en pantalla todas las propiedades del objeto al que corresponde el identificador id. get (id): produce un listado de las propiedades y de sus valores. set (id, 'propiedad', 'valor'): establece un nuevo valor para la propiedad del objeto con identificador id. Se pueden establecer varias propiedades en la misma llamada a set incluyendo una lista de parejas 'propiedad', 'valor' en la llamada. get (id, 'propiedad'): obtiene el valor de la propiedad especificada. delete (id): borra el objeto cuyo identificador es id y todos sus hijos.
Pgina 64
Botn de activacin Botn de seleccin Botn de eleccin Botn de presin Botn de aparicin
Cada botn cuenta con una serie de propiedades que explicaremos en el apartado siguiente.
Las propiedades de iucontrol son similares a las de uimenu. Destacamos: a) Value, valor: especifica el valor por omisin de ajuste. En el caso de interruptores de encendido/apagado, valor es 0 o 1. En el caso de un control deslizante (slider), puede ser cualquier valor entre el mnimo y el mximo. b) Min, Valor: establece el valor mnimo. Su significado difiere dependiendo del estilo. c) Max, Valor: establece el valor mximo. Su significado difiere dependiendo del estilo. Hay muchas ms propiedades que pueden incluirse en los comandos del uicontrol, tal como sucede con las propiedades del uimenu, aunque al programar conviene minimizar el nmero de propiedades a fin de simplificar el script.
Texto esttico. Un static text puede exhibir smbolos, mensajes o incluso valores numricos de una GUI, y puede colocarse en un lugar deseado. El texto esttico no tiene cadenas de invocacin. A continuacin mostramos un ejemplo de texto esttico. k1 = uicontrol (Style, text, String, cadena para exhibir, Position, [20, 50, 140, 30]) El contenido de un texto exhibido puede modificarse si es necesario. Esto se hace con el comando set. Por ejemplo, si se ejecuta el comando que sigue desde la ventana de comandos mientras est vigente el ejemplo anterior de orden uicontrol: set (k1, string, Ahora aparece un texto modificado.)
Pgina 66
Men desplegable. Los pop-up mens difieren de los mens de interfaz con el usuario en que pueden aparecer en cualquier punto de la ventana de la figura, mientras que los mens de interfaz con el usuario solo se localizan en la parte superior.
Push button Los Push button generan una accin cuando hacemos click con el puntero del ratn sobre ellos. Cuando se da click en un push button, aparece presionado; cuando se suelta el botn del ratn, el botn aparece levantado; y su rutina de llamada se ejecuta.
Casilla de verificacin. Las casillas de verificacin estn diseadas para realizar operaciones de encendido/apagado. Las posiciones de encendido/apagado se registran en Value que puede examinarse con get(handle, value). Los comandos axis on y axis off se escriben en la cadena de invocacin.
Botn de radio. Cuando solo se usa un botn de radio, no existe diferencia funcional alguna con respecto a una casilla de verificacin. Por otro lado, los botones de radio en grupo son mutuamente exclusivos (es decir, si un botn esta encendido, todos los dems botones se apagan), mientras que las casillas de verificacin son independientes entre s. Sin embargo, esta caracterstica exclusiva de los botones de radio slo puede implementarse mediante la programacin del usuario en la cadena de invocacin.
Barra deslizadora. Los sliders aceptan datos de entrada numricos con un rango especfico. Los usuarios mueven la barra dejando presionado el botn del mouse y arrastrndola, haciendo click en la flecha. La posicin de la barra indica un valor numrico.
Texto editable. El dispositivo de texto editable permite al usuario teclear una cadena de entrada. Se pueden escribir varios valores numricos en forma de vector o matriz como cadena mediante el mismo dispositivo; esta cadena se convertir posteriormente en valores numricos con el comando str2num.
Pgina 67
Marcos. El estilo marcos puede servir para agrupar dispositivos como lo botones de radio o las casillas de verificacin.
Botn de palanca. El toggle button genera una accin que indica un estado binario (on u off). Cuando se hace click en un toggle button, aparece presionado y permanece as hasta que se suelta el botn del mouse, y en ese momento ejecuta la llamada. Un click posterior del mouse regresa al toggle button a su estado original y vuelve a ejecutar la rutina de llamada.
Cajas de lista. El componente List Box muestra una lista de artculos y permite a usuarios seleccionar unos o ms artculos.
MLTIPLES EJES
Al crear una interfaz con el usuario, a menudo hay necesidad de trazar una o ms grficas dentro de la interfaz. Podemos usar el comando subplot para este fin, pero el comando axes es ms flexible y ofrece opciones verstiles a los programadores. El comando axes abre un eje en un punto especificado dentro de una ventana de figura.
PROPERTY INSPECTOR
El inspector de propiedades est compuesto de las siguientes propiedades o atributos, tal y como se muestra en la figura.
M Espaa Borrero Serrano Pgina 68
Cada uno de los controles tiene propiedades particulares, los cuales se analizan a continuacin:
BackgroundColor El color usado para rellenar el rectngulo de unicontrol. Especfica un color usando un vector de tres elementos RGB (rojo, verde y azul) o uno de los nombres ya predefinidos en Matlab. El color por "defecto" es determinado por la configuracin del sistema.
BusyAction Interrupcin de la rutina de llamada (callback). Si una llamada es ejecutada y el usuario activa un evento en un objeto para el cual una llamada est definida, esa llamada trata de interrumpir la primera llamada. La primera llamada puede ser interrumpida solamente por uno de los siguientes comandos: drawnow, figure, getframe,
Pgina 69
Nota: Si la llamada interrumpida es una llamada de DeleteFcn o CreateFcn o una de una figura de CloseRequest o ResizeFcn, se interrumpe y ejecuta sin importar el valor de la propiedad Interrumpible del objeto.
ButtonDownFcn Una rutina de llamada que se ejecuta cuando se presiona un botn del mouse mientras el cursor est en un uicontrol. Cuando la propiedad enable del unicontrol est desactivada, el ButtonDownFcn se ejecuta al hacer click en el unicontrol. Esto es til para implementar acciones, para modificar interactivamente las propiedades de control del objeto, como el tamao y la posicin. Esta rutina se define como una cadena (string) que es una expresin vlida en Matlab o el nombre de un archivo M (M-file). La expresin se ejecuta en el espacio de trabajo de Matlab. La propiedad de llamada define la rutina de llamada que se ejecuta cuando se hace clic en el botn.
Callback Controla la accin. Una rutina que se ejecuta cuando se activa un objeto de la clase uicontrol. Define esta rutina como una cadena. La expresin se ejecuta en el espacio de trabajo de Matlab. Para ejecutar la rutina para un control de texto editable, escribe el texto deseado y despus sigue uno de los siguientes pasos:
Pgina 70
Cdata Imagen de color verdadero mostrada en un control. Una matriz tridimensional de valores RGB que definen una imagen de color verdadero que es mostrada ya sea en un push button o un toggle button. Cada valor debe tener un rango entre cero y uno.
CreateFcn Rutina de llamada ejecutada cuando se crea un objeto. Esta propiedad define una rutina de llamada que es ejecutada cuando Matlab crea un objeto de la clase uicontrol. Se debe definir esta propiedad como un valor por defecto para los uicontrols.
DeleteFcn Una rutina de llamada que se ejecuta cuando se borra un objeto uicontrol. Matlab ejecuta la rutina antes de destruir las propiedades del objeto, as sus valores estn disponibles para la rutina de llamada.
Enable Activa o desactiva el uicontrol. Esta propiedad controla cmo los uicontrols responden a un clic del mouse, incluyendo qu rutina de llamada se ejecuta. on - El uicontrol es operacional inactive - no es operacional pero se ve como si estuviera activado off - No es operacional y su etiqueta se vuelve gris Cuando se hace clic con el botn izquierdo del mouse sobre un objeto uicontrol que tiene su propiedad enable activada (en on), Matlab ejecuta las siguientes acciones:
Pgina 71
Cuando se hace clic con el botn izquierdo del mouse sobre un objeto uicontrol que tiene su propiedad enable inactiva, o cuando se hace clic derecho en uno en el que Enable tiene cualquier valor, Matlab ejecuta estas acciones en este orden: Asigna la propiedad de la figura SelectionType. Asigna la propiedad de la figura CurrentPoint. Ejecuta la rutina de llamada WindowButtonDownFcn de la figura. En un click derecho, si el uicontrol esta asociado con un context menu, registra el context menu. Ejecuta la llamada ButtonDownFcn del control. Ejecuta la llamada del elemento seleccionado del context menu. No ejecuta la rutina de llamada del control. Poniendo esta propiedad inactiva te capacita para implementar arrastre o cambio de tamao de objetos usando la rutina de llamada ButtonDownFcn.
Extent Tamao de un carcter cadena uicontrol. Un vector de cuatro elementos que define el tamao y la posicin de un carcter de tipo cadena usado para etiquetar el uicontrol. Tiene la forma: [0, 0, width, height] Los dos primeros elementos siempre son cero. width (ancho) y height (alto) son las dimenciones del rectngulo. Todas las medidas son unidades especificadas por la propiedad Units.
Pgina 72
FontAngle Inclinacin de un carcter. Poniendo esta propiedad en Italic (italica) u oblique (oblicua) selecciona una versin inclinada de la fuente, cuando est disponible en el sistema.
FontName El nombre de la fuente que mostrar la cadena. Para mostrar e imprimir correctamente, debe ser un tipo de fuente que el sistema soporte. Para usar un ancho ajustado que se vea bien en cualquier exterior (y que se muestre correctamente en Japn, donde usan caracteres "multibyte"), se debe poner al FontName la cadena FixedWidth (esta cadena es sensible a las maysculas): Set (uicontrol_handle, 'FontName', 'FixedWidth' )
FontSize Tamao de la fuente. Un nmero que especifica el tamao de la fuente que va a ser mostrado en la cadena, en unidades determinadas por la propiedad FontUnits. El tamao por defecto es dependiente del sistema.
FontUnits Unidades del tamao de la fuente. Esta propiedad determina las unidades usadas por la propiedad FontSize.Las unidades normalizadas interpretan el FontSize como una fraccin de la altura del uicontrol. Cuando se cambia el tamao del uicontrol,
M Espaa Borrero Serrano Pgina 73
FontWeight Peso de un carcter. Poniendo esta propiedad en Bold hace que Matlab use una versin "negrita" de la fuente, cuando est disponible en el sistema.
ForegroundColor Color de texto. Esta propiedad determina el color del texto definido por la propiedad String. Especifica un color usando un vector de tres elementos RGB o un nombre predefinido en Matlab.
Pgina 74