这是一个应该工作的技巧:在GUI的某个地方,例如在其OpeningFcn中,将名为StopNow的标志初始化为false并将其存储在GUI的句柄结构中.然后在需要很长时间才能执行的循环中,只要标志设置为true,就调用if语句来返回.这将停止循环的执行,您将可以访问您的数据.您可以按下按钮来更改标志值.
示例代码:我创建了一个简单的GUI,它开始枚举for循环中的数字并在文本框中打印它们.按STOP按钮时,标志设置为true,循环停止.如果有什么不清楚请告诉我.
function StopGUI
clear
clc
close all
%// Create figure and uielements
handles.fig = figure('Position',[440 500 400 150]);
handles.CalcButton = uicontrol('Style','Pushbutton','Position',[60 70 80 40],'String','Calculate','Callback',@CalculateCallback);
handles.StopButton = uicontrol('Style','Pushbutton','Position',[250 70 80 40],'String','STOP','Callback',@StopCallback);
%// Initialize flag
handles.StopNow = false;
handles.Val1Text = uicontrol('Style','Text'