簡體   English   中英

設置從一個GUI到另一個GUI的句柄-Matlab

[英]Setting handles from one GUI to another GUI - Matlab

我是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)test1.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中開發的。

誰能建議我該怎么做?

使用GUIDEInspectorTag設置為您的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的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM