MATLAB创建多窗口app,实现窗口间数据共享及调用
一些matlab的初学者,可能想要实现类似于其他编程工具的多窗口调用及窗口间数据共享,但不知道在matlab中怎么实现,其实,matlab本身提供了这样的示例,下面结合matlab的官方示例,说一下这个多窗口调用的实现。1、打开matlab,新建两个app,一个是主app,一个是二级app,分别命名为mainapp和testapp。2、在mainapp添加一个按钮和一个文本控件,当按下按钮时,调用
一些matlab的初学者,可能想要实现类似于其他编程工具的多窗口调用及窗口间数据共享,但不知道在matlab中怎么实现,其实,matlab本身提供了这样的示例,下面结合matlab的官方示例,说一下这个多窗口调用的实现。
1、打开matlab,新建两个app,一个是主app,一个是二级app,分别命名为mainapp和testapp。
2、在mainapp添加一个按钮和一个文本控件,当按下按钮时,调用testapp。在testapp同样一个按钮和文本控件,当我们在testapp的文本框中输入一个值后,点击testapp的按钮,关闭testapp,同时将testapp文本中输入的值传回mainapp中,并显示在mainapp的文本框中。

3、编写程序,当框架搭好后,就需要编写程序,在内部实现数据共享和事件触发。
mainapp:
(1)、添加私有属性(只能在mainapp中调用)
properties (Access = private)
diaapp % test app
tv=1; % textvalue
end
matlab的属性,可以理解为变量,私有属性只可以在当前app中调用,如果想要其他app也能调用,就需要添加公有属性。
(2)、添加公有函数(可以在mainapp和testapp都调用)
methods (Access = public)
function textvalue(app,x)
app.tv=x;
app.EditField.Value=num2str(x);
app.Button.Enable='on';
end
end
添加共有函数,然后在代码区加入自己的程序,本例中即将函数的变量值赋予文本框的value。
(3)添加按钮事件回调、关闭app回调、初始启动回调等各种事件回调,打到连接和传递的目的。
function startupFcn(app) 起动回调
textvalue(app,app.tv)
end
% Button pushed function: Button
function ButtonPushed(app, event) 按钮回调
app.diaapp=testapp(app,app.tv);
app.Button.Enable='off';
end
% Close request function: UIFigure
function UIFigureCloseRequest(app, event) 关闭回调
delete(app.diaapp)
delete(app)
end
testapp:
(1)、添加私有函数
properties (Access = private)
callapp % main app
end
testapp里添加的callapp变量用于接收mainapp。
(2)添加各种回调:
% Code that executes after component creation
function startupFcn(app, mainapp, tv) 起动回调
app.callapp=mainapp;
app.EditField.Value=num2str(tv);
end
% Button pushed function: Button
function ButtonPushed(app, event) 按钮回调
textvalue(app.callapp,app.EditField.Value) 调用mainapp的共有函数
delete(app)
end
% Close request function: UIFigure
function UIFigureCloseRequest(app, event) 关闭回调
app.callapp.Button.Enable='on';
delete(app)
end
运行:
源代码下载:(免费)
https://download.csdn.net/download/normer123456/25199408
matlab官方示例链接:https://ww2.mathworks.cn/help/releases/R2018b/matlab/creating_guis/creating-multiwindow-apps-in-app-designer.html
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)