将句柄从一个GUI设置到另一个GUI - Matlab

时间:2015-08-10 00:08:13

标签: matlab matlab-guide

我是Matlab的新手,请原谅我的业余编码。我试图将句柄从一个GUI传递到另一个GUI,这是两个独立的GUI。

例如,我创建了两个GUI test1.mtest2.m,其中test2.m在打开函数中调用test1.m。所以我在这里尝试使用其句柄在test1.m上设置文本。但是我收到错误Reference to non-existent field test1_text。我甚至尝试通过在打开函数中执行test2.mtest1.m的句柄发送到test1(handles),但我仍然遇到同样的错误。

test2.m在第二个GUI中设置文本:

function varargout = test2(varargin)

gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @test2_OpeningFcn, ...
                   'gui_OutputFcn',  @test2_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end


function test2_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
test1
guidata(hObject, handles);



function varargout = test2_OutputFcn(hObject, eventdata, handles) 

varargout{1} = handles.output;


function test2_button_Callback(hObject, eventdata, handles)
str = sprintf('hello');
set(handles.test1_text,'String',str);

test1.m

function varargout = test1(varargin)

gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @test1_OpeningFcn, ...
                   'gui_OutputFcn',  @test1_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end

function test1_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

guidata(hObject, handles);


function varargout = test1_OutputFcn(hObject, eventdata, handles) 
varargout{1} = handles.output;

请注意,GUI是在Matlab指南中开发的。

任何人都可以建议我如何做到这一点吗?

1 个答案:

答案 0 :(得分:2)

使用Inspector' Tagtest1设置为my_test_1,即test2

Tag中,在使用之前找到具有此类function test2_button_Callback(hObject, eventdata, handles) obj = findall(0, 'Type', 'figure', 'Tag', 'my_test_1'); my_text = findobj(obj, 'Tag', 'test1_text'); str = sprintf('hello'); set(my_text,'String',str); 的对象:

test1

顺便说一下,您必须确保test1_text有一个名为{{1}}的对象。