如何从另一个gui调用MATLAB gui中的回调函数?

时间:2015-07-01 15:48:34

标签: matlab matlab-guide

我有两个用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'的错误。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

可能的解决方案如下:

假设您已按如下方式定义GUI 1:

  • GUI filename.m.fig个文件的名称)= master_gui
  • tag属性定义为"图1"
  • handlevisibility属性集on
  • 从GUI 2调用
  • callbackplot_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回调中使用,因此我最初发布的代码无效)

希望这有帮助。