Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-14, 20:46   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 如何解决hgload中的Matlab递归RecursionDetected错误?

我的Matlab GUI使用按钮单击来启动另一个GUI。

最近,我发现如果过分单击该按钮,则会导致Matlab崩溃并出现递归错误(请参见下面的说明)。是什么导致此递归错误,下一次如何解决?

错误说明:

???在155使用==> hgload> localCheckRecursion时出错在加载c:\ Algo \ MyGUI.fig时发生递归。

==> hgload在56 Guard时出错= localCheckRecursion(fullpath); %#好

==> openfig在72时出错[fig,savedvisible] = hgload(filename,struct('Visible','off'));

在==> gui_mainfcn> local_openfig中出现错误286 gui_hFigure = openfig(name,singleton,visible);

==> gui_mainfcn错误159 gui_hFigure = local_openfig(gui_State.gui_Name,gui_SingletonOpt,gui_Visible);

==> PumpControl在42 gui_mainfcn(gui_State,varargin {:})时出错;



回答:

重复单击GUI按钮可能导致多次调用按钮回调,这可能在某些时候相互中断并导致不必要的混乱。这可能是您遇到的问题。

您可以在MATLAB中设计GUI控件,以使其通过设置如下的'BusyAction''Interruptible'属性(其中hButton是按钮对象的句柄)来忽略快速单击,例如:

set(hButton,'BusyAction','cancel','Interruptible','off'); 将'Interruptible'设置为'off'意味着按钮回调在运行时不会被中断(某些“特殊”回调除外),而将'BusyAction'设置为'cancel'意味着在以下情况下将忽略按钮单击另一个回调(或它自己的)已经在执行。



更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 23:21


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.