Callback within a callback function?
이전 댓글 표시
Hi,
So I have a buttondownfcn callback on my figure 1 and when i click on the figure it runs the function say
set(gca,'ButtonDownFcn',@callback1);
Callback1 generates another figure and I want to be able to have a callback function for the second figure callback2.
set(gca,'ButtonDownFcn',@callback2);
in my first callback doesn't work.
How can I do this?
채택된 답변
추가 답변 (1개)
Steven Lord
2016년 6월 27일
0 개 추천
I recommend that you avoid using gca in your functions. Doing so leaves you at the mercy of anyone who can change which axes is current (which may include anyone who has control over the mouse.) Obtain the handle of the axes whose property you want to change from the handles structure and explicitly use that handle in your code to ensure you're modifying the property of the axes you think you are.
댓글 수: 5
Image Analyst
2016년 6월 28일
I guess like this:
In callback 1:
hFig2 = figure;
set(hFig2,'ButtonDownFcn',@callback2);
Soumyatha Gavvala
2016년 6월 28일
Guillaume
2016년 6월 28일
The parent of the lines objects returned by plot is the axis hangle:
hlines = plot(...);
haxis = hlines(1).Parent; %index hlines in case there is more than one line
Adam
2016년 6월 28일
Or create an explicit axes in the figure:
hFig = figure;
hAxes = axes( hFig );
hlines = plot( hAxes,... );
so that you plot onto an explicit axes which is always best. Leaving plot to decide for itself which axes to plot on is always risky - it will do so based on whatever is in focus which, within code, may not be what you think it is, which is the essence of Steven's original answer with respect to gca.
Soumyatha Gavvala
2016년 6월 28일
카테고리
도움말 센터 및 File Exchange에서 Interactive Control and Callbacks에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!