Matlab H必须是图形或图形后代的句柄

Matlab H必须是图形或图形后代的句柄,matlab,function,class,user-interface,Matlab,Function,Class,User Interface,我在matlab的classdef中调用GUI函数,但它给出错误“H必须是图形或图形后代的句柄” 如何在matlab的类中调用GUI函数? 顺便说一句,这个类的工作是完美的,但它给出了错误,然后图形就关闭了。 我的班级代码: classdef GUIclass < handle properties (Access = private) gui_h; end methods function obj = GUIclass

我在matlab的
classdef
中调用GUI函数,但它给出错误“H必须是图形或图形后代的句柄” 如何在matlab的类中调用GUI函数? 顺便说一句,这个类的工作是完美的,但它给出了错误,然后图形就关闭了。 我的班级代码:

classdef GUIclass < handle  

    properties (Access = private)
        gui_h;
    end
    methods

        function obj = GUIclass
            guihandles(GUI);
        end

    end


end
classdef GUIclass
此函数guihandles(h)需要一个句柄。如果由h指定的句柄(在您的情况下为
GUI
)已关闭,则该句柄不再有效。在将GUI与
iHandle(h)
iHandle(GUI)
一起使用之前,可以检查它是否是有效的句柄

请参阅以下代码:

close all;
h = 1;

% We just closed everything, so we expect handle h=1 to be bad:
if ishandle(h)
    disp('Is a valid handle');
else
    disp('Is not a valid handle');
end

% Now make the figure (we specify '1' so that will make h okay
figure(1);

% check to see if h is valid:
if ishandle(h)
    disp('Is a valid handle');
else
    disp('Is not a valid handle');
end

GUI变量是否应该是
obj.GUI\u h
?如果iHandle(GUI)guihandles(GUI),我解析了50%,但没有完全解析
;end
被添加,这样当GUI关闭时,它很好,但当按下GUI的任何选项然后关闭时,它会给出相同的错误,我如何才能完全检查此错误?@AhsanAli很可能是1)使用由
guihandles(…)
返回的句柄之一,而没有首先检查它是否
ishandle(h)
,或者你有一个导致问题的回调。是的,我认为回调问题正在发生,但是如何解决呢?@AhsanAli你可以1)检查回调中使用的所有句柄2)检查回调中的数字,如果无效,则取消回调并快速退出3)查看是否可以在数字中添加回调关闭并取消所有回调。