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

How to call a callback function in a MATLAB gui from another gui?

我有两个 GUI,是用 GUIDE 制作的。我正在尝试从 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' 类型的输入参数得到未定义函数 'add_note_Callback' 的错误。任何帮助将不胜感激。

可能的解决方案如下。

假设您的 GUI 1 定义如下:

  • GUI filename.m.fig 文件的名称)= master_gui
  • tag属性定义为"figure1"
  • handlevisibility属性集on
  • callback 从 GUI 2 调用: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 callback 调用的最后一个参数是 gd_m 即 GUI 1 handles

对错误感到抱歉(我最初发布的代码有效,因为 GUI 1 句柄未在 GUI 1 回调中使用)

希望这对您有所帮助。