Matlab - desplazamiento de boton....

 
Vista:

desplazamiento de boton....

Publicado por Alba (1 intervención) el 16/12/2004 19:46:43
Hola! Ante todo gracias por leer mi duda. Es la siguiente, quisiera saber si puedo, y cómo, desplazar un boton (interactivamente) creado en una interfaz, es decir que con el raton pueda mover por el panel principal (pantalla) cualquier objeto creado. Gracias de nuevo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Mover interactivamente un botón en una interfaz gráfica

Publicado por Alejandro (145 intervenciones) el 06/10/2023 16:50:50
¡Hola, Alba! Puedes lograrlo en Matlab permitiendo que el usuario interactúe con el botón a través del ratón. Aquí hay un ejemplo simple de cómo hacerlo:

Supongamos que tienes un botón llamado `pushbutton1` en tu interfaz gráfica de usuario (GUI). Asegúrate de haber creado una función de callback para el botón en GUIDE o mediante código. Luego, puedes agregar un código adicional para permitir el movimiento interactivo del botón.

1. Añadir callback para el botón (código MATLAB):
1
2
3
4
function miBoton_Callback(hObject, eventdata, handles)
    % Tu código existente para el callback del botón
    disp('¡Hiciste clic en el botón!');
end

2. Permitir movimiento interactivo (código MATLAB):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function miBoton_Callback(hObject, eventdata, handles)
    % Almacenar la posición inicial del ratón y la posición original del botón
    initialMousePosition = get(0, 'PointerLocation');
    originalButtonPosition = get(hObject, 'Position');
 
    % Callback para el movimiento del ratón
    set(gcf, 'WindowButtonMotionFcn', {@moveButton, hObject, initialMousePosition, originalButtonPosition});
 
    % Callback para la liberación del botón del ratón
    set(gcf, 'WindowButtonUpFcn', {@stopMovingButton, hObject});
end
 
% Función para mover el botón mientras se mantiene presionado el botón del ratón
function moveButton(~, ~, buttonHandle, initialMousePosition, originalButtonPosition)
    currentMousePosition = get(0, 'PointerLocation');
    deltaMousePosition = currentMousePosition - initialMousePosition;
 
    newPosition = originalButtonPosition + [deltaMousePosition(1), deltaMousePosition(2), 0, 0];
    set(buttonHandle, 'Position', newPosition);
end
 
% Función para detener el movimiento del botón al soltar el botón del ratón
function stopMovingButton(~, ~, buttonHandle)
    set(gcf, 'WindowButtonMotionFcn', '');  % Detener el movimiento al soltar el botón del ratón
    set(gcf, 'WindowButtonUpFcn', '');  % Restablecer la función de liberación del botón del ratón
end

3. Asociar la función de callback con el botón (GUIDE o código MATLAB):
- Asegúrate de que la función de callback asociada con tu botón sea la que hemos modificado.

Este código activará el movimiento interactivo del botón cuando el usuario haga clic en él. El botón se moverá según el movimiento del ratón hasta que se suelte el botón del ratón. Ten en cuenta que este código supone que estás trabajando en un entorno de GUI interactivo.

Espero que esto te ayude a lograr la funcionalidad que buscas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar