Borrar filtros
Borrar filtros

Use sprintf in callback function to get an output variable

2 visualizaciones (últimos 30 días)
Sam
Sam el 5 de Ag. de 2020
Comentada: Arthur Roué el 5 de Ag. de 2020
Hello,
I've got a very simple callback function 'countclicks', which displays the type of click (normal,alt,extend or open) and its coordinates in the command window when a mouse click is performed on my figure. How can I use sprintf to get the type of click and the associated coordinates in a seperate variable?
Thank you!
function countclicks(gcbo,eventdata,handles)
disp(get(gcf,'SelectionType'))
disp(get(gca,'CurrentPoint'))
end

Respuestas (1)

Arthur Roué
Arthur Roué el 5 de Ag. de 2020
function countclicks(gcbo,eventdata,handles)
strSelectionType = get(gcf,'SelectionType');
XY = get(gca,'CurrentPoint');
sprintf('Type : %s, X = %d / Y = %d', strSelectionType, XY(1), XY(2))
end
  3 comentarios
Steven Lord
Steven Lord el 5 de Ag. de 2020
Callback functions do not return any output arguments. So where do you want to "get a variable" that captures the click location?
I think you may want to use the ginput function.
Arthur Roué
Arthur Roué el 5 de Ag. de 2020
You can store thoses values in variable shared with the GUI main function and its nested functions.
function myGUI()
% Create a local variable shared with nested function
XY = []
% Creat an axe with a callback
hAxe = axes(.., 'ButtonDownFcn', @countclicks)
function countclicks(src, evt)
strSelectionType = get(src.Parent,'SelectionType'); % src.Parent = figure handme
XY = get(src,'CurrentPoint');
sprintf('Type : %s, X = %d / Y = %d', strSelectionType, XY(1), XY(2))
end
end

Iniciar sesión para comentar.

Categorías

Más información sobre Interactive Control and Callbacks en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by