繁体   English   中英

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

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

我有两个用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”的输入参数获取未定义函数“ add_note_Callback”的错误。 任何帮助将不胜感激。

可能的解决方案如下。

假设您的GUI 1定义如下:

  • GUI filename.m.fig文件的名称)= master_gui
  • tag属性定义为“ figure1”
  • 图上的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句柄)

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM