您的位置:首页 > 编程语言 > MATLAB

MATLAB编写GUI小结——程序停止中断button按钮实现

2019-06-21 18:42 2943 查看

笔者最近参加了一个小比赛,需要用MATLAB 写个软件,这里总结一下实现中止按钮时的一些心得体会。

实现方法是找的网上大牛提供的经验并结合自己的改进,这里就不一一列出链接,如果侵权,请联系笔者。

直接给出效果图:

当按下左侧的播放按钮,程序循环进行,并且左侧图标变为如下所示:

在程序循环进行时,点击右侧中止按钮,程序中断运行,且图标变回之前的播放按钮。

至于这里的button按钮为什么能实现这样的效果,有兴趣的同学可以参考笔者的另一篇博客:

MATLAB编写GUI小结——button按钮设置背景图片

 

这里直接给出左侧button按钮的 Callback 代码:

[code]global flagPlay

% 更改图标
position = get(handles.playPauseButton,'Position');
I = imread('.\icon\pause-circle-fill.bmp');   %读取图片
I = imresize(I, [position(4)*2.86*5, position(3)*5]);
set(handles.playPauseButton,'CData',I);  %将按钮的背景图片设置成A,美化按钮
guidata(hObject, handles);

% 循环输入

for jj = 1:100
pause(2.5 + rand(1) - 0.5); % 延时

jj

% 检测暂停
if (flagPlay == 0)
break;
end
drawnow()

end

% 更改图标
position = get(handles.playPauseButton,'Position');
I = imread('.\icon\play-circle-fill.bmp');   %读取图片
I = imresize(I, [position(4)*2.86*5, position(3)*5]);
set(handles.playPauseButton,'CData',I);  %将按钮的背景图片设置成A,美化按钮
guidata(hObject, handles);

flagPlay = 1;

直接给出右侧中止button按钮的 Callback 代码:

[code]global flagPlay

flagPlay = 0;

可以看出,两者通过全局变量 flagPlay 进行中止功能的实现。

当然在最开始,flagPlay = 1,即GUI开头的OpeningFcn()函数下,已经声明全局变量 flagPlay = 1。

当点击左侧按钮,开始播放时,先将图标更改为播放中图标,再执行循环功能部分;

关键在于循环中的如下代码:

[code]% 检测暂停
if (flagPlay == 0)
break;
end
drawnow()

这里的 drawnow() 使得该按钮下的函数能感知其他按钮对全局变量的更改,从而得以实现中止功能。

在得知中止按钮别按下后,先将图标更改为播放前图标,并令全局变量 flagPlay = 1。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐