Beruflich Dokumente
Kultur Dokumente
La raznprincipal por la que se utilizan las IGUses porque hacenlas cosas simplespara los usuariosfinalesdel programa.Sino se usaran las IGUs, se tendra que trabajardesde la interfaz de la lnea de comandos del MATLAB, lo que puede ser extremadamentedifcil yfrustrante. Imagnese siusted tuviera que ingresarrdenesde textopara operar sunavegadorweb(s, el navegador web tambin es unainterfaz grfica de usuario).No seramuyprctico verdad?En estetutorial, vamos a crear unainterfaz grfica de usuariosimple quesumados nmeros, y que muestra la respuesta en uncampo de textodesignado.
Este tutorial ha sido escrito para aquellosconpoca o ninguna experienciaen la creacin deunainterfaz grfica deMATLAB (Interface Grafica del Usuario). No es obligatorio tener conocimientos bsicos deMATLAB,pero se recomienda.Para escribir estetutorial se utiliz MATLABversin2007a.Pensamos que las versionesanterioresy las nuevas versionesde MATLAB deberantambin ser compatibles(siempre que no sea demasiadoobsoleta). Vamos aempezar! contenido La inicializacin delGUIDE (Creador de la IGU) Creacin delaspecto visual de lainterfaz grfica de usuario: Parte 1 Creacin delaspecto visual de lainterfaz grfica de usuario: Parte 2 Escribirel Cdigo paralasdevoluciones de llamada de la interfaz grfica de usuario Lanzamiento de lainterfaz grfica de usuario Resolucin de problemasy problemas potenciales Foros relacionadosy otros enlaces La inicializacin delGUIDE (Creador de la IGU)
GUI (que es la
Creacindel aspecto visual de la interfaz grfica de usuario: Parte 1 Para la IGU del sumador, necesitaremos los siguientes componentes o o o
Dos componentes de edicin de texto Tres componente de Texto esttico Un componente pulsador
Aadir todos estoscomponentes a lainterfaz grfica de usuariohaciendo clicen el respectivo icono ycolocndolo enla parrilla.En este punto,suinterfaz grfica de usuariodebe ser similar ala que se muestra en la siguiente figura:
Quizs despus de haber modificadoestas propiedades,el componente no pueda sercompletamentevisible en eleditor grfico. Como el tamao de la letra se ha hecho ms grande y no entra en la caja de texto, esto se puede solucionarsi se cambia el
tamaodel componente,es decir, utilizarel cursor del ratny estirarel componente parahacerlo ms grande.
4. Ahora, haga lo mismo para el siguiente componente de Texto esttico, peroen lugar de cambiarel parmetroString a+, cmbielo a =. 5. Para el tercer componente deTexto esttico, cambie el parmetro String (cadena)a lo
que usteddesea que sea elttulo de suinterfaz grfica de usuario. Por simplicidad lo he llamadoMyAdderGUI. Tambin aqu puede experimentarun poco con lasopciones de diferentes fuentes.
6. Para el componente final de Texto esttico, queremos establecer el parmetro de cadena (String) a 0. Adems, para este componente queremos modificar el parmetro llamado Tag (etiqueta). El parmetro Tages en realidad el nombre de la variable de este componente. Vamos a llamarle answer_staticText. Este componente se utilizara para mostrar nuestra respuesta, como usted probablemente ya se habr dado cuenta
Reorganicesuscomponentes para que se vean parecidos al dibujo.Cuando haya terminado Usted debertener algo parecido a esto:
MATLABgenera automticamente unarchivo .m acompaante cada vez que se crea una figura.Elarchivo.mes dondecolocamosel cdigo correspondienteala devolucin de llamadade cada componente.Para los efectos deeste tutorial,principalmenteslonos ocuparemos de lasfunciones dedevolucin de llamada.Usted no tieneque preocuparseacerca de cualquier otrotipo de funcin que encuentre en el cdigo del archivo .m.
%checks to see if input is empty. if so, default input1_editText to zero if (isempty(input)) set(hObject,'String','0') end guidata(hObject, handles);
Esta pieza de cdigosimplementese asegura de quelaentradaeste bien definida.No queremosque el usuario ingrese entradas que no sean nmeros!La ltima lneadel cdigo le indica a lainterfaz grfica del usuario que despus de que se ha completado la devolucin de llamada,debe de actualizar la estructura delos controladores o alias.Los controladores o aliasalmacenan todos losdatos pertinentes relacionados conlainterfaz grfica del usuario. Este temase tratar aprofundidad en untutorialdiferente.Por ahora,es unabuena idea que ustedlo acepte sin demostracin y que finalice todas las funcionesde devolucin de llamadacon la instruccinguidata(hObject, handles), de modo que los controladores o alias
11. Agregue el mismo bloque de cdigo anterior a input2_editText_Callback. 12. Ahoratenemos que editareladd_pushbutton_Callback. Haga clic enel icono
y seleccioneadd_pushbutton_Callback. Elsiguiente bloque de cdigoes lo que debera deveren el archivo .m.
13. % --- Executes on button press in add_pushbutton. 14. functionadd_pushbutton_Callback(hObject, eventdata, handles) 15. % hObject 16. % eventdata 17. % handles handle to add_pushbutton (see GCBO) reserved - to be defined in a future version of MATLAB structure with handles and user data (see GUIDATA)
total = str2num(a) + str2num(b); c = num2str(total); % need to convert the answer back into String type to display it set(handles.answer_staticText,'String',c); guidata(hObject, handles);
Las dos lneas del cdigo anteriorleen las cadenas que estn dentro de los componentes de texto editable, y las almacenan en las variables a y b. Puesto que son variables del tipo cadena o String, y no son variables del tipo numrico, no podemos sumarlas. Por lo tanto, tenemos que convertir ay bal tipo numricopara que el MATLAB puedasumarlas. . 21. Podemos convertirvariables del tipocadena (String) altipo numricousando
elcomandode MATLABstr2num(argumento tipo cadena).Del mismo modo, podemos hacer lo contrarioconnum2str(argumento del tipo Numrico).La siguiente lnea decdigo se utiliza parasumarlas dos entradas.
22. total= (str2num(a) + str2num(b));
La siguiente lnea decdigo conviertela variablesuma una variable deltipocadenayla almacenaen la variablec.
c = num2str(total);
Larazn por la queconvertimosla respuesta finalnuevamente altipocadena, esporque el componentede Texto estticono muestraen pantalla variables del tiponumrico.Si noseconviertede nuevo en untipocadena,lainterfaz grfica del usuarioseencuentra con unerroral intentarmostrar la respuesta.
23. Ahoraslo tenemos queenviarla sumade las dos entradasa la caja derespuesta
quehemos creado.Esto se realiza utilizandolasiguiente lnea de cdigo. Esta lnea de cdigo rellena elcomponentede Texto estticoconla variable c.
24. set(handles.answer_staticText,'String',c);
Felicidades,hemos terminadola codificacin de laIGU.No se olvide deguardar suarchivo-m.Ahora nos toca correrlaIGU!
25. If you dont want MATLAB to automatically generate all those comments for each of the callbacks, there is a way to disable this feature. From the GUI editor, go to File, then to Preferences.Sino desea queMATLABgenere automticamentetodos
loscomentarios paracada una de lasdevoluciones de llamada,hayuna manera de desactivaresta funcin.Desdeel editor deinterfaz grfica de usuario, vaya a Archivoy luegoa Preferencias
Laprimera formaes a travs deleditor del GUIDE.Slo tiene que pulsarel icono editor del GUIDE como se muestraen la siguiente figura:
enel
Elsegundo mtodo consiste enlanzarla IGU desde el aviso de la ventana de comandosdel MATLAB.En primer lugar,establecer el directorioactualdel MATLABa cualquier lugar en elque guardsus archivos .fig y.m.
A continuacin, escribael nombre de lainterfaz grfica de usuarioenel smbolo del sistema(noes necesario que escribala extensin .fig o .m):
Trate deintroducir algunosnmerospara probarlainterfaz grfica de usuario.Felicitaciones porla creacin de suprimera interfaz grfica de usuario! Solucin de problemasy problemas potenciales As que suinterfaz grficano funciona yno sabespor qu.Aqu hay un pardeconsejos que puedenayudarte a encontrar elerror: Si no puedeaveriguar dnde podra estar el error,serauna buena idealeer estetutorialde nuevo.