当我按下按钮时,我正在构建一个显示图像的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);
答案 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);
。