如何将句柄传递给某些GUI回调Matlab

时间:2015-08-12 16:52:11

标签: matlab user-interface callback handles

我正在编写一个matlab程序,我正试图将我的句柄结构传递给所有我的回调。唯一的问题是我正在使用GUIDE而且我不能将句柄作为参数传递给我创建的函数:

%The proper slider callback: Deleted the default within GUIDE

function sliderContValCallback(hFigure,eventdata)

%test it out- get the handles object and dispay the current value
%getappdata(handles.video_loader_button,'handles');

handles = guidata(hFigure);

handles.currentFrame = floor(get(handles.slider,'Value'));
set(handles.frameBox,'String',num2str(handles.currentFrame));
fprintf('slider value: %f\n',get(handles.slider,'Value'));


updateAxes(handles);

问题在于,我现在“处理”处理的方式是,它与其他UI对象回调函数使用的句柄实际上并不相同。我还想过用getappdata传递句柄,但你需要句柄才能做到这一点,所以我被卡住了。这已经引起了一些问题,如何解决这个问题的任何帮助都会很棒,谢谢!

编辑: 我删除了GUIDE生成的回调,因此我可以使用sliderContValCallback作为函数句柄并在此处调用它:

handles.sliderListener = addlistener(handles.slider,'ContinuousValueChange',...
    @(hFigure,eventdata) sliderContValCallback(hObject,eventdata));

用于连续更新,因为用户拖动滑块(这用于滚动视频,并且运行良好)。

我质疑这个的真正原因是因为我打电话的时候:

allCoords  = getappdata(handles.axes1,'mydata');
coordsXYZ = allCoords.clickcoordinates; %Do this to access the field     'allCoords' within 'mydata'
curIndex = allCoords.currentIndex;

if numel(coordsXYZ)>0
    for i = 1:length(coordsXYZ)
        coordXY = [coordsXYZ(i).x,coordsXYZ(i).y];
        %viscircles(handles.axes1,coordXY,1,'EdgeColor','r');
        hold on;
        plot(coordsXYZ(i).x,coordsXYZ(i).y,'o');
    end
end

一切正常但由于某种原因生成了一个数字,该情节被绘制到handles.axes1上的图像。这很奇怪,因为当我通过移动它来更新滑块时,这个随机数字会弹出。

0 个答案:

没有答案