Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.
Nota
Este tema se aplica a las aplicaciones que se crean mediante programación con la función de ilustración. Para obtener formas alternativas de compilar aplicaciones, consulte.Formas de crear aplicaciones
En este ejemplo se muestra cómo crear una aplicación sencilla mediante programación, como la que se muestra aquí.
Las secciones siguientes le guiarán a través del proceso de creación de esta aplicación.
Si prefiere ver y ejecutar el código que creó esta aplicación sin crearla, establezca la carpeta actual en una a la que tenga acceso de escritura. Copie el código de ejemplo y ábralo en el editor emitiendo los siguientes comandos:MATLAB®
copyfile(fullfile(docroot, 'techdoc','creating_guis',... 'examples','simple_gui2*.*')), fileattrib('simple_gui2*.*', '+w'); edit simple_gui2.m
Nota
Este código usa la notación de puntos para establecer propiedades de objetos gráficos. La notación de puntos se ejecuta en la versión r2014b y posterior. Si está utilizando una versión anterior, utilice la función en su lugar.set
Por ejemplo, cambie a.f.Visible = 'on'
set(f,'Visible','on')
Para ejecutar el código, vaya a la sección de la pestaña.RunEditor A continuación, haga clicRun .
Cree un archivo de función (en contraposición a a, que contiene una secuencia de comandos pero no define funciones).archivo de scriptMATLAB
En el símbolo del sistema, escriba.MATLABedit
Escriba la siguiente instrucción en la primera línea del editor.
function simple_gui2
Después de la instrucción de función, escriba estos comentarios, terminando con una línea en blanco. (Los comentarios se muestran en la línea de comandos en respuesta al comando.)help
% SIMPLE_GUI2 Select a data set from the pop-up menu, then
% click one of the plot-type push buttons. Clicking the button
% plots the selected data in the axes.
(Leave a blank line here)
Al final del archivo, después de la línea en blanco, agregue una instrucción.end
Esta instrucción es obligatoria porque el ejemplo utiliza funciones anidadas.end
Para obtener más información, consulte.Nested Functions
Guarde el archivo en la carpeta actual o en una ubicación que se encuentra en la ruta de acceso.MATLAB
Para crear un contenedor para la interfaz de usuario (IU) de la aplicación, agregue el siguiente código antes de la instrucción en el archivo:end
% Create and then hide the UI as it is being constructed. f = figure('Visible','off','Position',[360,500,450,285]);
La llamada a la función crea una figura tradicional y establece las siguientes propiedades:figure
La propiedad se establece para que la ventana sea invisible a medida que se agregan o se inicializan los componentes.Visible
'off'
La ventana se vuelve visible cuando la interfaz de usuario tiene todos sus componentes y se inicializa.
La propiedad se establece en un vector de cuatro elementos que especifica la ubicación de la interfaz de usuario en la pantalla y su tamaño: [distancia desde la izquierda, distancia desde la parte inferior, anchura, altura].Position
Las unidades predeterminadas son píxeles.
Cree los botones de inserción, el texto estático, el menú emergente y los componentes de los ejes en la interfaz de usuario.
Después de la llamada a, agregue estas instrucciones al archivo de código para crear tres componentes de botón de inserción.figure
% Construct the components. hsurf = uicontrol('Style','pushbutton',... 'String','Surf','Position',[315,220,70,25]); hmesh = uicontrol('Style','pushbutton',... 'String','Mesh','Position',[315,180,70,25]); hcontour = uicontrol('Style','pushbutton',... 'String','Contour','Position',[315,135,70,25]);
Cada sentencia utiliza una serie de pares de propiedades/valores para definir un pulsador:uicontrol
La propiedad especifica que el uicontrol es un botón de inserción.Style
La propiedad especifica la etiqueta en cada botón pulsador:,, y.String
Surf
Mesh
Contour
La propiedad especifica la ubicación y el tamaño de cada pulsador: [distancia desde la izquierda, distancia desde la parte inferior, anchura, altura].Position
Las unidades predeterminadas para los botones de inserción son píxeles.
Cada llamada devuelve el identificador del botón de inserción creado.uicontrol
Agregue el menú emergente y una etiqueta de texto agregando estas instrucciones al archivo de código siguiendo las definiciones del botón de inserción. La primera instrucción crea la etiqueta. La segunda instrucción crea el menú emergente.
htext = uicontrol('Style','text','String','Select Data',... 'Position',[325,90,60,15]); hpopup = uicontrol('Style','popupmenu',... 'String',{'Peaks','Membrane','Sinc'},... 'Position',[300,50,100,25]);
La propiedad de componente de menú emergente utiliza una matriz de celdas para especificar los tres elementos en el menú emergente:, y.String
Peaks
Membrane
Sinc
El componente de texto, la propiedad especifica instrucciones para el usuario.String
Para ambos componentes, la propiedad especifica el tamaño y la ubicación de cada componente: [distancia desde la izquierda, distancia desde la parte inferior, anchura, altura].Position
Las unidades predeterminadas para estos componentes son píxeles.
Agregue los ejes agregando esta instrucción al archivo de código.
ha = axes('Units','pixels','Position',[50,60,200,185]);
La propiedad especifica los píxeles para que los ejes tengan las mismas unidades que los demás componentes.Units
Después de todas las definiciones de componente, agregue esta línea al archivo de código para alinear todos los componentes, excepto los ejes, a lo largo de sus centros.
align([hsurf,hmesh,hcontour,htext,hpopup],'Center','None');
Agregue este comando después del comando.align
Nota
Este código usa la notación de puntos para establecer las propiedades del objeto. La notación de puntos se ejecuta en la versión r2014b y posterior. Si está utilizando una versión anterior, utilice la función en su lugar.set
Por ejemplo, cambie a.f.Visible = 'on'
set(f,'Visible','on')
f.Visible = 'on';
El archivo de código debe ser como este:
function simple_gui2 % SIMPLE_GUI2 Select a data set from the pop-up menu, then % click one of the plot-type push buttons. Clicking the button % plots the selected data in the axes. % Create and then hide the UI as it is being constructed. f = figure('Visible','off','Position',[360,500,450,285]); % Construct the components. hsurf = uicontrol('Style','pushbutton','String','Surf',... 'Position',[315,220,70,25]); hmesh = uicontrol('Style','pushbutton','String','Mesh',... 'Position',[315,180,70,25]); hcontour = uicontrol('Style','pushbutton',... 'String','Contour',... 'Position',[315,135,70,25]); htext = uicontrol('Style','text','String','Select Data',... 'Position',[325,90,60,15]); hpopup = uicontrol('Style','popupmenu',... 'String',{'Peaks','Membrane','Sinc'},... 'Position',[300,50,100,25]); ha = axes('Units','Pixels','Position',[50,60,200,185]); align([hsurf,hmesh,hcontour,htext,hpopup],'Center','None'); % Make the UI visible. f.Visible = 'on'; end
Ejecute el código escribiendo en la línea de comandos.simple_gui2
Puede seleccionar un conjunto de datos en el menú emergente y hacer clic en los botones de inserción, pero no sucede nada. Esto se debe a que no hay ningún código de devolución de llamada en el archivo para realizar el servicio del menú emergente o los botones.
El menú emergente permite a los usuarios seleccionar los datos que se trazan. Cuando un usuario selecciona uno de los tres conjuntos de datos en el menú emergente, el software establece la propiedad del menú emergente en el índice del elemento de menú seleccionado.MATLABValue
La devolución de llamada del menú emergente lee la propiedad del menú emergente para determinar qué elemento se muestra actualmente y se establece en consecuencia.Value
current_data
Agregue la siguiente devolución de llamada al archivo después del código de inicialización y antes de la instrucción final.end
Nota
Este código usa la notación de puntos para obtener propiedades del objeto. La notación de puntos se ejecuta en la versión r2014b y posterior. Si está utilizando una versión anterior, utilice la función en su lugar.get
Por ejemplo, cambie a.str = source.String
str = get(source,'String')
% Pop-up menu callback. Read the pop-up menu Value property to % determine which item is currently displayed and make it the % current data. This callback automatically has access to % current_data because this function is nested at a lower level. function popup_menu_Callback(source,eventdata) % Determine the selected data set. str = source.String; val = source.Value; % Set current data to the selected data set. switch str{val}; case 'Peaks' % User selects Peaks. current_data = peaks_data; case 'Membrane' % User selects Membrane. current_data = membrane_data; case 'Sinc' % User selects Sinc. current_data = sinc_data; end end
Cada uno de los tres pulsadores crea un tipo de trazado diferente utilizando los datos especificados por la selección actual en el menú emergente. Las devoluciones de llamada del botón de inserción trazan los datos.current_data
Automáticamente tienen acceso a porque están anidados en un nivel inferior.current_data
Agregue las siguientes devoluciones de llamada al archivo después de la devolución de llamada del menú emergente y antes de la instrucción final.end
% Push button callbacks. Each callback plots current_data in the % specified plot type. function surfbutton_Callback(source,eventdata) % Display surf plot of the currently selected data. surf(current_data); end function meshbutton_Callback(source,eventdata) % Display mesh plot of the currently selected data. mesh(current_data); end function contourbutton_Callback(source,eventdata) % Display contour plot of the currently selected data. contour(current_data); end
Cuando el usuario selecciona un conjunto de datos en el menú emergente o hace clic en uno de los botones de inserción, el software ejecuta la devolución de llamada asociada a ese evento en particular.MATLAB Utilice la propiedad de cada componente para especificar el nombre de la devolución de llamada con la que se asocia cada evento.Callback
Para la instrucción que define el botón de inserción, agregue el par de propiedades/valoruicontrol
Surf
'Callback',{@surfbutton_Callback}
para que la declaración tenga este aspecto:
hsurf = uicontrol('Style','pushbutton','String','Surf',... 'Position',[315,220,70,25],... 'Callback',{@surfbutton_Callback});
es el nombre de la propiedad. es el nombre de la devolución de llamada que los servicios del botón de inserción.Callback
surfbutton_Callback
Surf
Para la instrucción que define el botón de inserción, agregue el par de propiedades/valoruicontrol
Mesh
'Callback',@meshbutton_Callback
Para la instrucción que define el botón de inserción, agregue el par de propiedades/valoruicontrol
Contour
'Callback',@contourbutton_Callback
Para la instrucción que define el menú emergente, agregue el par propiedad/valoruicontrol
'Callback',@popup_menu_Callback
Para obtener más información, consulte.Escribir devoluciones de llamada para aplicaciones creadas mediante programación
Inicializar la interfaz de usuario, por lo que está listo cuando la ventana se hace visible. Haga que la interfaz de usuario se comporte correctamente cuando cambie el tamaño cambiando el componente y las unidades de figura.normalized
Esto hace que los componentes cambiar de tamaño cuando se cambia el tamaño de la interfaz de usuario. Las unidades normalizadas asignan la esquina inferior izquierda de la ventana de la figura a y la esquina superior derecha a.(0,0)
(1.0, 1.0)
Nota
Este código usa la notación de puntos para establecer las propiedades del objeto. La notación de puntos se ejecuta en la versión r2014b y posterior. Si está utilizando una versión anterior, utilice la función en su lugar.set
Por ejemplo, cambie a.f.Units = 'normalized'
set(f,'Units','normalized')
Reemplace este código en el editor:
% Make the UI visible. f.Visible = 'on';
con este código:
% Initialize the UI. % Change units to normalized so components resize automatically. f.Units = 'normalized'; ha.Units = 'normalized'; hsurf.Units = 'normalized'; hmesh.Units = 'normalized'; hcontour.Units = 'normalized'; htext.Units = 'normalized'; hpopup.Units = 'normalized'; % Generate the data to plot. peaks_data = peaks(35); membrane_data = membrane; [x,y] = meshgrid(-8:.5:8); r = sqrt(x.^2+y.^2) + eps; sinc_data = sin(r)./r; % Create a plot in the axes. current_data = peaks_data; surf(current_data); % Assign a name to appear in the window title. f.Name = 'Simple GUI'; % Move the window to the center of the screen. movegui(f,'center') % Make the UI visible. f.Visible = 'on';
Asegúrese de que el código aparece como debería y, a continuación, ejecútelo.
Nota
Este código usa la notación de puntos para obtener y establecer las propiedades del objeto. La notación de puntos se ejecuta en la versión r2014b y posterior. Si está utilizando una versión anterior, utilice las funciones y en su lugar.get
set
Por ejemplo, cambie a.f.Units = 'normalized'
set(f,'Units','normalized')
Compruebe que el archivo de código tiene este aspecto:
function simple_gui2 % SIMPLE_GUI2 Select a data set from the pop-up menu, then % click one of the plot-type push buttons. Clicking the button % plots the selected data in the axes. % Create and then hide the UI as it is being constructed. f = figure('Visible','off','Position',[360,500,450,285]); % Construct the components. hsurf = uicontrol('Style','pushbutton',... 'String','Surf','Position',[315,220,70,25],... 'Callback',@surfbutton_Callback); hmesh = uicontrol('Style','pushbutton',... 'String','Mesh','Position',[315,180,70,25],... 'Callback',@meshbutton_Callback); hcontour = uicontrol('Style','pushbutton',... 'String','Contour','Position',[315,135,70,25],... 'Callback',@contourbutton_Callback); htext = uicontrol('Style','text','String','Select Data',... 'Position',[325,90,60,15]); hpopup = uicontrol('Style','popupmenu',... 'String',{'Peaks','Membrane','Sinc'},... 'Position',[300,50,100,25],... 'Callback',@popup_menu_Callback); ha = axes('Units','pixels','Position',[50,60,200,185]); align([hsurf,hmesh,hcontour,htext,hpopup],'Center','None'); % Initialize the UI. % Change units to normalized so components resize automatically. f.Units = 'normalized'; ha.Units = 'normalized'; hsurf.Units = 'normalized'; hmesh.Units = 'normalized'; hcontour.Units = 'normalized'; htext.Units = 'normalized'; hpopup.Units = 'normalized'; % Generate the data to plot. peaks_data = peaks(35); membrane_data = membrane; [x,y] = meshgrid(-8:.5:8); r = sqrt(x.^2+y.^2) + eps; sinc_data = sin(r)./r; % Create a plot in the axes. current_data = peaks_data; surf(current_data); % Assign the a name to appear in the window title. f.Name = 'Simple GUI'; % Move the window to the center of the screen. movegui(f,'center') % Make the window visible. f.Visible = 'on'; % Pop-up menu callback. Read the pop-up menu Value property to % determine which item is currently displayed and make it the % current data. This callback automatically has access to % current_data because this function is nested at a lower level. function popup_menu_Callback(source,eventdata) % Determine the selected data set. str = get(source, 'String'); val = get(source,'Value'); % Set current data to the selected data set. switch str{val}; case 'Peaks' % User selects Peaks. current_data = peaks_data; case 'Membrane' % User selects Membrane. current_data = membrane_data; case 'Sinc' % User selects Sinc. current_data = sinc_data; end end % Push button callbacks. Each callback plots current_data in the % specified plot type. function surfbutton_Callback(source,eventdata) % Display surf plot of the currently selected data. surf(current_data); end function meshbutton_Callback(source,eventdata) % Display mesh plot of the currently selected data. mesh(current_data); end function contourbutton_Callback(source,eventdata) % Display contour plot of the currently selected data. contour(current_data); end end
Ejecute la aplicación escribiendo en la línea de comandos.simple_gui2
El código de inicialización hace que se muestren los datos predeterminados con la función, por lo que la interfaz de usuario se ve así.peaks
surf
En el menú emergente, seleccione y, a continuación, haga clic en el botón.MembraneMesh La interfaz de usuario muestra una gráfica de malla de la Logotipo de membrana en forma de LMathWorks®.
Pruebe otras combinaciones antes de cerrar la interfaz de usuario.
Escriba en la línea de comandos. software muestra el texto de ayuda.help simple_gui2
MATLAB
help simple_gui2 SIMPLE_GUI2 Select a data set from the pop-up menu, then click one of the plot-type push buttons. Clicking the button plots the selected data in the axes.