Effacer les filtres
Effacer les filtres

Use sprintf in callback function to get an output variable

2 vues (au cours des 30 derniers jours)
Sam
Sam le 5 Août 2020
Commenté : Arthur Roué le 5 Août 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

Réponses (1)

Arthur Roué
Arthur Roué le 5 Août 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 commentaires
Steven Lord
Steven Lord le 5 Août 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é le 5 Août 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

Connectez-vous pour commenter.

Catégories

En savoir plus sur Interactive Control and Callbacks dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by