按下按钮按下另一个按钮。 Matlab GUI

时间:2017-02-07 15:24:48

标签: matlab user-interface

当我按下按钮时,我正在构建一个显示图像的GUI,但是有很多图像,有时候我想跳过一些图像,所以我试图做的事情是,得到一个编辑texbox,我把我要去的图像的数量,按一个按钮按下另一个按钮,直到我到达所需的图像。我想这样做(按下另一个按钮x次以获得所需的图像)因为在图像传递给另一个的同时发生了一堆并行的事情。

所以我的按钮代码是:

function pushbutton14_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton14 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
i = str2double(get(handles.edit4, 'String'));
while handles.counterN < i
    pushbutton1_Callback(hObject, eventdata, handles);
    guidata(hObject, handles);
end

所以每当我按下按钮14时,我想让它按下按钮1,直到计数器(每按一次按钮1加1n)到达edit4中的值。

但由于某种原因,guidata未更新,因此计数器始终保持为1。

我有guidata(hObject, handles);,在按钮1功能结束时...所以我不明白为什么没有更新,我也尝试在while循环中没有guidata(hObject, handles);

1 个答案:

答案 0 :(得分:2)

pushbutton1_Callback正在递增handles.counterN,但您永远不会获得递增的值。实际上,当回调返回时,您立即用1覆盖它。请记住,在pushbutton14_Callback的范围内,handles.counterN为1. pushbutton1_Callback可能会递增计数器,但不在调用函数的范围内。在您致电guidata之前,使用pushbutton14_Callback进行设置不会更新handles = guidata(hObject);中的值。由于pushbutton1_Callback已调用guidata(hObject, handles);,因此请改为设置数据:

guidata(hObject, handles);替换为handles = guidata(hObject);