我试图传递数据(主要是结构,来自gui元素的信息等),但是这样做有些麻烦。这是我的例子:
function []=myGUI()
fig=figure('position',[200 200 200 200]);
SecondS.edit1=uicontrol('style','edit','position',[25 60 80 20],'parent',fig,'string','enter 2nd');
SecondS.edit2=uicontrol('style','edit','position',[25 80 80 20],'parent',fig,'string','enter 1st');
SecondS.text=uicontrol('string','no result yet','style','text','position',[20 10 80 20],'parent',fig);
S.button=uicontrol('string','Giris','style','push','position',[30 30 40 20],'parent',fig,'Callback',{@myCallback,SecondS});
function []=myCallback(varargin)
S=varargin{3};
first=get(S.edit1,'string')
second=get(S.edit2,'string')
if isequal(first,'enes')&isequal(second,'gormez')
set(S.text,'string','both names match');
end
在上面的示例中,我可以传递结构'SecondS',并且可以使用'GCBO'到达触发器小部件的信息。但是,如果我有另一个变量,不在SecondS或完全不同的结构中的变量,则无法传递数据。我如何做到这一点而不必触摸我已经通过的信息。
非常感谢您的关注。
在搜索了几个小时后,在下面找到我的问题的解决方案。
function myGUI()
fig=figure('position',[200 200 200 200]);
SecondS.edit1=uicontrol('style','edit','position',[25 60 80 20],'parent',fig,'string','enter 1st');
SecondS.edit2=uicontrol('style','edit','position',[25 80 80 20],'parent',fig,'string','enter 2nd');
SecondS.text=uicontrol('string','no result yet','style','text','position',[20 10 80 20],'parent',fig);
SecondS.button=uicontrol('string','Giris','style','push','position',[30 30 40 20],'parent',fig,'Callback',@myCallback);
guidata(fig,SecondS);
endfunction
function myCallback(hObject,eventdata)
S=guidata(hObject)
first=get(S.edit1,'string')
second=get(S.edit2,'string')
if isequal(first,'enes')&&isequal(second,'gormez')
set(S.text,'string','both names match');
end
endfunction
这里是一个例子。请仔细比较您的代码,看看有什么变化。
function myGUI()
fig1 = figure( 'position', [200 200 200 120], 'name', 'Main User Interface' );
SecondS.edit1 = uicontrol( fig1, 'style', 'edit', 'position', [25 90 160 20] , 'string', 'enter 1nd', 'userdata', 'edit1');
SecondS.edit2 = uicontrol( fig1, 'style', 'edit', 'position', [25 60 160 20] , 'string', 'enter 2nd', 'userdata', 'edit2');
SecondS.text = uicontrol( fig1, 'style', 'text', 'position', [25 10 160 20], 'string', 'no result yet', 'userdata', 'textoutput' );
fig2 = figure( 'position', [500, 300, 200, 100], 'name', 'The Button!' );
S.button = uicontrol( fig2, 'style', 'pushbutton', 'position', [50 25 100 50], 'string', 'Giris', 'Callback', @myCallback );
endfunction
function myCallback( Hndl, Evnt )
fig1 = findobj( 'name', 'Main User Interface' );
edit1 = findobj( fig1, 'userdata', 'edit1' );
edit2 = findobj( fig1, 'userdata', 'edit2' );
textoutput = findobj( fig1, 'userdata', 'textoutput' );
first = get( edit1, 'string' );
second = get( edit2, 'string' );
if strcmp( first, 'enes' ) && strcmp( second, 'gormez' )
set( textoutput, 'string', 'both names match' );
endif
endfunction