我有两个用GUIDE制作的GUI。我试图从GUI2调用GUI1中的按钮回调函数。这是GUI2中的代码
set(0,'showHiddenHandles','on');
hfig = gcf;
m_handles = guidata(hfig); % handles in GUI1
set(m_handles.show_status , 'String' , ...
[script sprintf('\n') s_response]); % this line works
set(m_handles.add_note , 'Enable' , 'off'); % this line also works
add_note_Callback(m_handles.add_note, eventdata, m_handles); % but this does not work!
对于'struct'类型的输入参数,我得到Undefined函数'add_note_Callback'的错误。任何帮助将不胜感激。
答案 0 :(得分:3)
可能的解决方案如下:
假设您已按如下方式定义GUI 1:
filename
(.m
和.fig
个文件的名称)= master_gui
tag
属性定义为"图1" handlevisibility
属性集on
callback
:plot_something_Callback
然后从GUI 2中的pushbutton
开始,要调用GUI 1中定义的plot_something_Callback
因此,在GUI 2 pushbutton callback
中,您可以编码:
% Get the GUI 1 obj
g_m=findobj('tag','figure1')
% Get GUI handles
gd_m=guidata(g_m);
% Call GUI 1 callback from GUI 2 callback
% master_gui('plot_something_Callback',gd_m.plot_something,[],g_m)
master_gui('plot_something_Callback',gd_m.plot_something,[],gd_m)
注意,GUI 1应该是开放的。
代码修改
GUI 1回调调用中的最后一个参数是gd_m
,即GUI 1 handles
对此错误感到抱歉(由于GUI 1处理未在GUI 1回调中使用,因此我最初发布的代码无效)
希望这有帮助。