设置从一个 GUI 到另一个 GUI 的句柄 - Matlab
Setting handles from one GUI to another GUI - Matlab
我是 Matlab 的新手,请原谅我的业余编码。我正在尝试将句柄从一个 GUI 传递到另一个 GUI,这是两个独立的 GUI。
例如,我创建了两个GUI的test1.m
和test2.m
,其中test2.m
在打开函数中调用了test1.m
。所以我在这里尝试使用其句柄在 test1.m
上设置文本。但是我得到一个错误 Reference to non-existent field test1_text
。我什至尝试通过在打开函数中执行 test1(handles)
将 test2.m
的句柄发送到 test1.m
,但我仍然遇到相同的错误。
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 GUIDE 中开发的。
谁能告诉我该怎么做?
使用 GUIDE
的 Inspector
将 Tag
设置为您的 test1
,即 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
.
的对象
我是 Matlab 的新手,请原谅我的业余编码。我正在尝试将句柄从一个 GUI 传递到另一个 GUI,这是两个独立的 GUI。
例如,我创建了两个GUI的test1.m
和test2.m
,其中test2.m
在打开函数中调用了test1.m
。所以我在这里尝试使用其句柄在 test1.m
上设置文本。但是我得到一个错误 Reference to non-existent field test1_text
。我什至尝试通过在打开函数中执行 test1(handles)
将 test2.m
的句柄发送到 test1.m
,但我仍然遇到相同的错误。
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 GUIDE 中开发的。
谁能告诉我该怎么做?
使用 GUIDE
的 Inspector
将 Tag
设置为您的 test1
,即 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
.