matlab GUI-如何给GUI添加重置和退出功能

matlab GUI-如何给GUI添加重置和退出功能,第1张

上一篇介绍了如何控制GUI中按钮的开启与关闭,达到引导 *** 作者按顺序点击按钮的目的。那么,如果 *** 作者想要重新从头再 *** 作一遍,比如像昨天的例子, *** 作者对一张照片进行小波分解与重构后,又想对另一张照片进行小波分解重构,此时,就需要有一个“重置”按钮。

        还是以上一篇界面为例,当我们把“选择图像”、“小波分解”、“小波重构”按步骤 *** 作完后,界面如下图:

        此时,我们要点击进行重置的话,有三个方面:1.把“选择图像”、“小波分解”、“小波重构”三个按钮的开启与否的状态恢复到原来;2.把三个坐标轴中的图像清空;3.把“级数”和“全局阈值”和“压缩信息”对应的三个可编辑框中的数值恢复为默认值。

        话不多说,直接把“重置”按钮的回调函数放上来:

        我已经用红框把三部分给圈了出来。第一部分很好理解,我在注释中已经标注了。第二部分就是把三个坐标轴清空,用到的是 “cla reset”这个语句。此时要注意的是,坐标轴重置后会出现横纵坐标轴,如下图所示。而我们这里坐标轴是用来放图像的,所以还要添加set(handles.edit,'Xtick',[],'Ytick',[])把横纵坐标轴去掉。

       第三部分就是把“级数”和“全局阈值”和“压缩信息”对应的三个可编辑框中的数值恢复为默认值。默认把小波分解的级数设为2,把小波重构的全局阈值设为10。

        如果要做到严谨的话,对GUI进行重置还需要把程序中用到的变量都重新赋为初值。在这里我就不啰嗦了,因为这个例子不需要,反正把流程重新走一遍,程序中的变量都会被重新赋值的。

        最后说说退出GUI界面,很简单,一句“close all”就搞定了。

%%%%%在close回调函数下

function pushbutton3_Callback(hObject, eventdata, handles)

close(gcf)

button=questdlg('是否确认关闭','关闭确认','是','否','是')

if strcmp(button,'是')

delete(hObject)

else

return

end

前段时间的一个问题【matlab gui 循环计算过程实现暂停和继续计算】(编号426631696194936852)是题主问的吧?

由于度娘弱智又恶心的过滤机制,后续的交流一直不顺畅(我试图通过评论说明多次被删,也看到多次有评论提醒,但打开却看不到),现把代码上传到这里。

基本做法是,在进行循环之前,加上以下几句:

fig=gcf figure(fig)

setappdata(fig,'Disu_Pause',0)

set(fig,'WindowButtonDownFcn','setappdata(gcbf,''Disu_Pause'',~getappdata(gcbf,''Disu_Pause''))')

然后,在每个循环体的最里层的最前面,加上

    % 通过获取自定义的数据Disu_Pause判断是否暂停;关闭窗口则退出

    try

        while true

            if ~getappdata(fig,'Disu_Pause')

                break

            else

                pause(0.01)

            end

        end

    catch me

        return

    end

基本思想:

1、通过自定义窗口的应用数据避免使用全局变量;

2、设置窗口的WindowButtonDownFcn回调函数在点击鼠标时改变应用数据;

3、在每个循环中,如果状态为pause,则利用形式上的死循环进行等待(每次0.01秒,是系统时钟的精度),如果不是状态,则退出等待的循环体;

4、用try-catch结构,在关闭窗口时返回(即退出程序)。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11810238.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存