一、问题说明
经常在设计MATLAB GUI的时候,想按下一个按键,程序循环运行,直到你想让他停下来,他才停下来为止。这个时候就需要几个按钮之间的数据传递。
二、问题的解决办法
如何解决按下一个按钮程序循环运行,直到你按下另一个键的时候,程序退出。其基本思路的是设置一个flag,当第一个按键按下的时候程序循环运行,每次循环一次都要判断flag的值,当第二个键按下的时候,更改flag的值,循环程序检测到了flag值得的时候,就退出循环,直到程序运行结束。
举个例子,设立两个按钮,并到他们的callback中去:
首先,要在OpeningFcn函数中设立一个变量handles.value = 0;
</pre><span style="white-space:pre"> </span><pre name="code" class="cpp">function TEST_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
handles.value = 0;
guidata(hObject, handles);
然后在button1中建立一个循环程序
function button1_Callback(hObject, eventdata, handles)
while 1
...
pause(1e-100); %这句话相当重要
handles = guidata(hObject);
if handles.value == 1
handles.value = 0;
break;
end
...
end
之后在button2中更改handles.value的值
<strong><span style="font-size:24px;">function button2_Callback(hObject, eventdata, handles)
handles.value = 1;
guidata(hObject,handles);</span></strong>
在主循环中必须加上一个时间很短的暂停,用于检测第二个按钮是否按下,并缸盖handles.value的值。
这样就可以在你想要退出程序的即可退出