如何从另一个 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 回调中使用)
希望这对您有所帮助。
我有两个 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 回调中使用)
希望这对您有所帮助。