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.

Escribir devoluciones de llamada para aplicaciones creadas mediante programación

Devoluciones de llamada para diferentes acciones del usuario

Los componentes de interfaz de usuario y gráficos tienen ciertas propiedades que puede asociar con funciones de devolución de llamada específicas. Cada una de estas propiedades corresponde a una acción de usuario específica. Por ejemplo, un uicontrol tiene una propiedad llamada.Callback Puede establecer el valor de esta propiedad para que sea un identificador de una función de devolución de llamada, una función anónima o un vector de caracteres que contenga una expresión.MATLAB® Establecer esta propiedad hace que la aplicación responda cuando el usuario interactúa con el uicontrol. Si la propiedad no tiene ningún valor especificado, no sucede nada cuando el usuario interactúa con el uicontrol.Callback

Esta tabla enumera las propiedades de devolución de llamada que están disponibles, las acciones del usuario que desencadenan la función de devolución de llamada y los componentes de interfaz de usuario y gráficos más comunes que los usan.

Propiedad callback

Acción del usuario

Componentes que utilizan esta propiedad

ButtonDownFcn

El usuario final presiona un botón del ratón mientras el puntero está en el componente o la figura.

, , , , , ,axesfigureuibuttongroupuicontroluipaneluitable

Callback

El usuario final desencadena el componente. Por ejemplo: seleccionar un elemento de menú, mover un deslizador o presionar un botón pulsador.

, ,uicontextmenuuicontroluimenu

CellEditCallback

El usuario final edita un valor en una tabla cuyas celdas son editables.

uitable

CellSelectionCallback

El usuario final selecciona las celdas de una tabla.

uitable

ClickedCallback

El usuario final hace clic en la herramienta de empuje o palanca con el botón izquierdo del ratón.

,uitoggletooluipushtool

CloseRequestFcn

La cifra se cierra.

figure

CreateFcn

Callback se ejecuta al crear el objeto, pero antes de que se muestre.MATLAB

, , , , , , , , , ,axesfigureuibuttongroupuicontextmenuuicontroluimenuuipushtooluipaneluitableuitoggletooluitoolbar

DeleteFcn

Callback se ejecuta justo antes de borrar la figura.MATLAB

, , , , , , , , , ,axesfigureuibuttongroupuicontextmenuuicontroluimenuuipushtooluipaneluitableuitoggletooluitoolbar

KeyPressFcn

El usuario final presiona una tecla de teclado mientras el puntero está en el objeto.

, , , , ,figureuicontroluipaneluipushtooluitableuitoolbar

KeyReleaseFcn

El usuario final libera una tecla de teclado mientras el puntero está en el objeto.

, ,figureuicontroluitable

OffCallback

Se ejecuta cuando cambia el de una herramienta de alternancia.State'off'

uitoggletool

OnCallback

Se ejecuta cuando cambia el de una herramienta de alternancia.State'on'

uitoggletool

SizeChangedFcn

El usuario final cambia el tamaño de un grupo de botones, figura o panel cuya propiedad es.Resize'on'

, ,figureuipaneluibuttongroup

SelectionChangedFcn

El usuario final selecciona un botón de opción o botón de alternancia diferente dentro de un grupo de botones.

uibuttongroup

WindowButtonDownFcn

El usuario final presiona un botón del ratón mientras el puntero está en la ventana de la figura.

figure

WindowButtonMotionFcn

El usuario final mueve el puntero dentro de la ventana de la figura.

figure

WindowButtonUpFcn

El usuario final suelta un botón del ratón.

figure

WindowKeyPressFcn

El usuario final presiona una tecla mientras el puntero está en la figura o en cualquiera de sus objetos secundarios.

figure

WindowKeyReleaseFcn

El usuario final libera una clave mientras el puntero está en la figura o en cualquiera de sus objetos secundarios.

figure

WindowScrollWheelFcn

El usuario final gira la rueda del ratón mientras el puntero está en la figura.

figure

Cómo especificar valores de propiedad de devolución de llamada

Para asociar una función de devolución de llamada con un componente de interfaz de usuario, establezca el valor de una de las propiedades de devolución de llamada del componente para que sea una referencia a la función de devolución de llamada. Normalmente, esto se hace cuando se define el componente, pero se pueden cambiar los valores de propiedad de devolución de llamada en cualquier parte del código.

Especifique el valor de la propiedad de devolución de llamada de una de las siguientes maneras:

Especifique un identificador de función

Los identificadores de función proporcionan una manera de representar una función como una variable. La función debe ser una función local o anidada en el mismo archivo que el código de la aplicación, o puede escribirla en un archivo independiente que se encuentra en la ruta de acceso.MATLAB

Para crear el identificador de función, especifique el operador antes del nombre de la función.@ Por ejemplo, este comando especifica la propiedad para que sea un identificador para la función:uicontrolCallbackpushbutton_callback

b = uicontrol('Style','pushbutton','Callback',@pushbutton_callback);

Esta es la definición de función para: tenga en cuenta que el identificador de función no hace referencia explícita a los argumentos de entrada, pero la declaración de función incluye dos argumentos de entrada.pushbutton_callback

function pushbutton_callback(src,event)    display('Button pressed'); end
Estos dos argumentos de entrada son necesarios para todas las devoluciones de llamada que especifique como un identificador de función. pasa estos argumentos automáticamente cuando se ejecuta la devolución de llamada.MATLAB El primer argumento es el componente de interfaz de usuario que desencadenó la devolución de llamada. El segundo argumento proporciona datos de evento a la función de devolución de llamada. Si no hay datos de eventos disponibles para la función de devolución de llamada, pasa el segundo argumento de entrada como una matriz vacía.MATLAB En la tabla siguiente se enumeran las devoluciones de llamada y los componentes que utilizan datos de eventos.

Nombre de propiedad de devolución de llamadaComponente
WindowKeyPressFcn
WindowKeyReleaseFcn
WindowScrollWheel
figure
KeyPressFcn, ,figureuicontroluitable
KeyReleaseFcn, ,figureuicontroluitable
SelectionChangedFcnuibuttongroup
CellEditCallback
CellSelectionCallback
uitable

Una ventaja de especificar devoluciones de llamada como identificadores de función es que comprueba la función de errores de sintaxis y las dependencias que faltan cuando se asigna la devolución de llamada al componente.MATLAB Si hay un problema en la función de devolución de llamada, a continuación, devuelve un error inmediatamente en lugar de esperar a que el usuario desencadene la devolución de llamada.MATLAB Este comportamiento le ayuda a encontrar problemas en el código antes de que el usuario los encuentre.

Especifique una matriz de celdas

Utilice una matriz de celdas para especificar una función de devolución de llamada que acepte argumentos de entrada adicionales que desee utilizar en la función. El primer elemento de la matriz de celdas es un identificador de función. Los demás elementos de la matriz de celdas son los argumentos de entrada adicionales que desea usar, separados por comas. La función que especifique debe definir los mismos dos argumentos de entrada como se describe en.Especifique un identificador de función Sin embargo, puede definir entradas adicionales en la declaración de función después de los dos primeros argumentos.

Este comando crea un botón pulsador y especifica la propiedad para que sea una matriz de celdas.uicontrolCallback En este caso, el nombre de la función es, y el valor del argumento de entrada adicional es.pushbutton_callback5

b = uicontrol('Style','pushbutton','Callback',{@pushbutton_callback,5}); 

Aquí está la definición de la función para:pushbutton_callback

function pushbutton_callback(src,event,x)    display(x); end

Al igual que las devoluciones de llamada especificadas como identificadores de función, comprueba las devoluciones de llamada especificadas como matrices de celdas para errores de sintaxis y dependencias faltantes cuando se asigna la devolución de llamada al componente.MATLAB Si hay un problema en la función de devolución de llamada, a continuación, devuelve un error inmediatamente en lugar de esperar a que el usuario desencadene la devolución de llamada.MATLAB Este comportamiento le ayuda a encontrar problemas en el código antes de que el usuario los encuentre.

Especifique una función anónima

Especifique una función anónima cuando desee que un componente de interfaz de usuario ejecute una función que no admita los dos argumentos necesarios para los identificadores de función y las matrices de celdas. Por ejemplo, este comando crea un botón de inserción y especifica la propiedad para que sea una función anónima.uicontrolCallback En este caso, el nombre de la función es, y su declaración de función define solo un argumento de entrada,.myfunx

b = uicontrol('Style','pushbutton','Callback',@(src,event)myfun(x));

Especificar un vector de caracteres que contenga comandos (no recomendado)MATLAB

Puede especificar un vector de caracteres cuando desee ejecutar algunos comandos simples, pero la devolución de llamada puede volverse difícil de administrar si contiene más de unos pocos comandos. El vector de caracteres que especifique debe constar de expresiones válidas, que pueden incluir argumentos a funciones.MATLAB Por ejemplo: el vector de caracteres, es un comando válido y lo evalúa cuando el usuario hace clic en el botón.

hb = uicontrol('Style','pushbutton',...                'String','Plot line',...                'Callback','plot(rand(20,3))'); 
'plot(rand(20,3))'MATLAB Si el vector de caracteres incluye una variable, por ejemplo, la variable debe existir en el espacio de trabajo base cuando el usuario desencadena la devolución de llamada o devuelve un error.
'plot(x)'
x La variable no necesita existir en el momento de asignar el valor de propiedad de devolución de llamada, pero debe existir cuando el usuario desencadena la devolución de llamada.

A diferencia de las devoluciones de llamada que se especifican como identificadores de función o matrices de celdas, comprueba los vectores de caracteres para errores de sintaxis o dependencias que faltan.MATLABnot Si hay un problema con la expresión, permanece sin ser detectado hasta que el usuario desencadena la devolución de llamada.MATLAB

Temas relacionados