A.3.1 La función uicontrol
La función uicontrol permite crear una interfaz gráfica para usuarios (GIU). La secuencia de llamado es:
h = uicontrol('Prop',Val,...)
h = uicontrol(parent,'Prop',Val,...) h = uicontrol(uich)
h = uicontrol('Prop',Val,...) crea un uicontrol con identificador h y le asigna las propiedades
(Prop) y valores (Val) especificados. El estilo por defecto es un botón. El dominio o lugar de creación por defecto es la figura que está en uso.
h = uicontrol(parent,'Prop',Val,...) crea un uicontrol en el objeto especificado por parent.
h=uicontrol(uich) pone el foco en el uicontrol especificado por uich.
Todos los objetos gráficos se comunican a través de sus propiedades. Así, para crear controles adaptados hace falta conocer el uso de las siguientes propiedad.
BackgroundColor. Color de fondo del uicontrol. El color puede ser un vector real [R,G,B] o una tira de letras donde cada valor está separado por un |, es decir "R|G|B"
callback. (string) Tira que es evaluada por el interprete de scilab cuando se activa un uicontrol
(por ejemplo cuando se hace click sobre un botón).
Enable {on}|off Abilita o desabilita el uicontrol. Lallave indica el valor por defecto.
fontangle. (string) Pone la inclinación de la letra de un texto en el control. Tiene que ser
alguna de estas tiras: {'normal'} | italic | oblique. La llaves indica el valor por defecto. fontsize. (número real) Pone el tamaño de las letras de un texto en un control.
fontunits. (string) Selecciona las unidades del tamaño de letra especificada por fontsize. Tiene que ser alguna de estas tira: {points} | pixels | normalized.
fontweight. (string) Pone el grosor de la letra utilizada en el texto de un control. Tiene que ser alguna de estas tira: light | {normal} | demi |
fontname. (string) Contiene el nombre del tipo de letra elegido para mostrar el texto del
control.
ForegroundColor Color en el frente del control. El color puede ser dado como un vector real
[R,G,B] o una tira de letras "R|G|B" donde cada valor está separado por un |
Horizontalalignment. (string) Elige la alineación horizontal en el control. Tiene que ser alguna de estas tiras: left | {center} | right. Esta propiedad solo puede ser utilizada enlos estilos 'text', 'edit' y 'checkbox'.
ListboxTop (entero) Para un estilo ListBox, elige el ítem de la lista que aparece en la primera línea.
Max (escalar) Especifica el mayor valor de 'value'. Sin embargo, tiene significado diferente
según el control:
o Check Boxes : Max es el valor que toma de la propiedad 'value' cuando es chequeado el control
o Silders : valor máximo del deslizador
o List boxes : si (Max-Min)>1 la lista permite elecciones múltiples, de otra forma no.
Min (escalar) Especifica el menor valor de 'value'. Sin embargo, tiene significado diferente según el control:
o Check Boxes : Min es el valor que toma la propiedad 'value' cuando el control no es chequeado
o Silders : valor mínimo del deslizador
Parent (entero) Gestor del control. Cambiando esta propiedad se mueve el control de una
figura a otra.
Path Esta propiedad es de solo lectura. Permite obtener el camino TK del control como una tira de letras.
Position vector real [1,4] o tira de letras. Pone la configuración geométrica del control. Es un vector x y w h donde x, y corresponden a la posición de la esquina inferior izquierda, w al ancho y h a la altura. La unidad la determina la propiedad 'Unit'.
SliderStep vector real de [1,2] o tira de letras. Tiene que ser alguna de estas: [small big]. Un paso small corresponde al movimiento que se obtiene cuando se presiona sobre las teclas flechas; El paso big corresponde al movimiento de un Ctrl-keyboard-arrows.
String (string) Generalmente representa al texto que aparece en el control. Su significado exacto depende del estilo del control:
o List Boxes, menú desplegable, el valor puede ser un vector de letras o una tira de letras donde los ítem están separados por un '|'.
Style Estilo del control. Debe ser alguna de estas tiras: {pushbutton} | radiobutton | checkbox
| edit | text | slider | frame |listbox | popupmenu
o pushbutton Un botón rectangular generalmente utilizado para correr un procedimiento. o radiobutton Un botón con los estados : on / off.
o checkbox Un control pequeño con los estados : on / off o edit Un control de letras que se pueden editar
o text un control de textos (generalmente estáticos).
o slider Un control barra de desplazamiento utilizada para poner valores en un rango con el mouse.
o frame Un control representando un zona utilizada para agrupar controles que están relacionados.
o listbox Un control para una lista de ítem. El ítem se elige con el mouse. o popupmenu Ahe aparecer un menú cuando se clickea sobre un botón.
Tag Propiedad generalmente utilizada para identificar el control. Tira de letras para darle un
"name".
Units Define la unidad utilizada en la propiedad 'position'. Tiene que ser alguna de estas tiras: {points} | pixels | normalized.
Userdata Puede utilizarse para asociar algunos objetos (string, matriz de string, matriz mxn) a un control.
Value Valor del control. El significado exacto depende de la propiedad estilo. o Checkboxe, Radiobutton. Value se pone Max cuando es on y Min cuando off.
o ListBoxe, PopupMenu. Value es un vector de índices que corresponde al índice de la entrada elegida en la lista. 1 es el primer ítem de la lista.
o Sliders Valor elegido en la barra de desplazamiento.
Verticalalignment Para poner el alineamiento vertical del texto en el control. Tiene que ser alguna de estas tiras: top | {middle} | bottom. Esta propiedad se puede utilizar sólo con los estilos 'text' y 'checkbox'.
h=uicontrol(f,'style','listbox', ...
'position', [10 10 150 160],...// crea un listbox 'string', "item 1|item 2|item3",...// llena la lista 'value', [1 3])// selecciona item 1 y 3 en la lista
x=0:%pi/10:%pi; function y=foo(x) y=sin(x) plot(x,y,'ro-') endfunction f=figure(1); uicontrol(f,'style','pushbutton', ... 'position', [10 10 100 50],... 'string', "seno",... 'callback', "plot(sin(x))") uicontrol(f,'style','pushbutton', ... 'position', [100 10 100 50],... 'string', "función",... 'callback', "exec(foo(x))")
A.3.2 La función uimenu
La función uimenu crea un menú o un submenú en una figura. Si el parent es una figura, entonces el menú se agregará a la barra de menú de la figura. Si parent es un menú, entonces el nuevo ítem se agregara a los ítem del parent, permitiendo crear submenú en cascada. La secuencia del llamado es:
h=uimenu([prop1,val1] [,prop2, val2] ...)
h=uimenu(parent,[prop1, val1] [,prop2, val2] ...)
parent : Un entero que administra la relación del menú prop{1, 2 ...} : nombre de la propiedad
val{1, 2 ...} : valor para afectar a la propiedad correspondiente h : Entero que identifica el menú correspondiente
Para crea un menú adaptado se puede utilizar algunas de las siguientes propiedades:
callback (string) Permite colocar la instrucción a llamar cuando el ítem es elegido por el
usuario.
label (string) Permite colocar el texto que aparece en el item.
tag (string) Esta propiedad generalmente es utilizada para identificar el menú. Permite darle
A.3.3 Las funciones set y get
Con la función set se pone o modifica el valor de la propiedad de un objeto de interfase de usuario, como uicontrol. La secuencia del llamado es:
set(prop,val) set(h,prop,val) h.prop=val
Esta función pude utilizarse para colocar una propiedad especifica a una entidad gráfica. Esta entidad gráfica es identificada por su manija h. Si la manija no se especifica el objeto en uso es tomado por defecto. El tipo de valor para poner a la propiedad depende del tipo de propiedad de la entidad gráfica.
Con la función get se obtiene el valor de la propiedad de una entidad gráfica o de un objeto de interfase de usuario. Las secuencias del llamado es:
f=figure('position', [10 10 300 200]);// crea una figura
m=uimenu(f,'label', 'ventanas');// crea un item en la barra de menú
m1=uimenu(m,'label', 'operaciones');//crea un segundo item en el menu "windows"
m2=uimenu(m,'label', 'salir de scilab', 'callback', "exit") x=0:%pi/10:2*%pi;y=sin(x);
m11=uimenu(m1,'label', 'nueva ventana', 'callback',"xselect()",'callback',"plot(x,y)");
m12=uimenu(m1,'label', 'borra la ventana', 'callback',"xbasc()"); // crea un submenu para el item "operaciones"
h=get(prop) val=get(h,prop) val=h.prop
Esta función puede utilizarse para obtener el valor de una propiedad de un objeto GUI. Si no se especifica la manija h, el objeto en uso es tomado por defecto. También se utiliza para obtener una lista de todos los hijos, padres, o tipos que dependen de la manija de entrada. A continuación se explica el significado de las variables de las secuencias del llamado de ambas funciones:
h : una manija, el identificador de la entidad a la cual se quiere poner el valor de la propiedad. h puede ser un vector, en cuyo caso pone el valor de la propiedad de todos los objetos identificados por h(i).
prop : una tira de caracteres con el nombre de la propiedad que se quiere poner. val : valor para dar a la propiedad.
En el siguiente ejemplo, con el botón Pasa1 se toma el valor de la propiedad string, en este caso la palabra hola, del uicontrol cuya manija es h1 y lo pone como valor de la misma propiedad pero del uicontrol con manija h2. Es decir se paso el texto de una caja a otra caja de estilo edit. Al presionar el botón Pasa2 la palabra HOLA, en mayúsculas, se pone como propiedad de h2.
clf()
f=figure(1,'position',[100 100 300 300])
h1=uicontrol(f,'style','edit', 'position', [10 10 100 50],'string','hola'); h2=uicontrol(f,'style','edit', 'position', [150 10 100 50],'string',''); h3=uicontrol(f,'style','pushbutton','position', [10 200 100 50],'string','Pasa1','callback','exec(foo2())'); h4=uicontrol(f,'style','pushbutton','position', [150 200 100 50],'string','Pasa2','callback','exec(foo1())'); function foo1() set(h2,"string",'') set(h2,"string",'HOLA') endfunction function foo2() set(h2,"string",'') p=get(h1,'string') set(h2,"string",string(p)) endfunction
APENDICE B
TOMA DE DATOS CON INTERFASE TCL/TK
Existe la posibilidad de complementar a Scilab con el lenguaje Tcl/Tk, con el que se amplían las prestaciones de Scilab para realizar programas más elaborados, por ejemplo programación orientada a objetos o para la adquisición de datos. En el capítulo anterior se han utilizado los comandos figure, uicontrol y uimenu que son ejemplos de interfaces TCL para la creación de objetos gráficos. En este capítulo, primero se presentan comandos para ejecutar sentencias o archivos TCL y luego la aplicación de éstas para la adquisición de datos mediante la computadora.