如何存储数据从DialogApp CallingApp关闭DialogApp在应用程序设计师?

19日视图(30天)
你好,
我有一个按钮的功能在一个应用程序,打开一个DialogApp两种纺纱和运行一个独立的Matlab函数。
我想从DialogApp是将这两个值存储在主应用程序/他们插入函数,然后关闭对话框窗口/在函数运行之前和填充轴在主应用程序。
我设法创建一个按钮在主应用程序,打开对话框窗口和运行功能,但它不填充函数的两个从DialogApp所需的值。
函数PushButtonPushed(应用程序、事件)
%禁用选项按钮在对话框打开
app.PushButton。使=“关闭”;
%与输入值调用对话框
dby = 1;指南针= 0;
app.DialogApp = DialogApp(应用程序、dby、指南针);
[app.x, app.y app.z、app.N app.E, app.Up, app.P, app.Q, app.Upak, app.Lpak, app.t2, app.t4] = my_function (dby、指南针);
情节(应用程序。pq_axes、app.t4 app.P)
情节(应用程序。packer_axes、app.t4 app.Upak、app.t4 app.Lpak)
app.PushButton。使=“上”;
结束
谁能告诉我如何存储的值DialogApp在主应用程序这样的函数可以使用它们?
谢谢你!
1评论
F S
F S 2021年9月3日
编辑:F S 2021年9月3日
下面我也从DialogApp更好地理解代码。当然现在的工作的方式是DialogApp和函数取默认值定义为1和0和运行,没有任何影响的转轮DialogApp。我知道,可能有一个以上的问题。但我真的不设法解决的是如何获得的值DialogApp进我的函数。
classdefDialogApp < matlab.apps.AppBase
%属性对应于应用程序组件
属性(访问=公共)
UIFigurematlab.ui.Figure
OKButtonmatlab.ui.control.Button
toolorientationSpinnermatlab.ui.control.Spinner
toolorientationSpinnerLabelmatlab.ui.control.Label
speedupdownsampledatabySpinnermatlab.ui.control.Spinner
speedupdownsampledatabySpinnerLabelmatlab.ui.control.Label
结束
属性(访问=私人)
CallingApp%的描述
结束
%事件回调处理组件
方法(访问=私人)
%在组件创建之后执行的代码
函数startupFcn(应用,mainapp dby罗盘)
app.CallingApp = mainapp;
结束
%按钮推功能:OKButton
函数OKButtonPushed(应用程序、事件)
删除(应用)
结束
%值改变功能:speedupdownsampledatabySpinner
函数speedupdownsampledatabySpinnerValueChanged(应用程序、事件)
dby = app.speedupdownsampledatabySpinner.Value;
结束
%值改变功能:toolorientationSpinner
函数toolorientationSpinnerValueChanged(应用程序、事件)
指南针= app.toolorientationSpinner.Value;
结束
结束
%初始化组件
方法(访问=私人)
%创建UIFigure和组件
函数createcomponent(应用)
%创建创建UIFigure和隐藏,直到所有组件
app.UIFigure = uifigure (“可见”,“关闭”);
app.UIFigure。位置= (100 100 254 226);
app.UIFigure。Name =MATLAB应用程序的;
%创建speedupdownsampledatabySpinnerLabel
app.speedupdownsampledatabySpinnerLabel = uilabel (app.UIFigure);
app.speedupdownsampledatabySpinnerLabel。HorizontalAlignment =“中心”;
app.speedupdownsampledatabySpinnerLabel。位置= (40 173 176 45);
app.speedupdownsampledatabySpinnerLabel。文本= {“加速”;“(downsample数据:)”};
%创建speedupdownsampledatabySpinner
app.speedupdownsampledatabySpinner = uispinner (app.UIFigure);
app.speedupdownsampledatabySpinner。限制= (10000);
app.speedupdownsampledatabySpinner。RoundFractionalValues =“上”;
app.speedupdownsampledatabySpinner。ValueChangedFcn = createCallbackFcn(应用,@speedupdownsampledatabySpinnerValueChanged,真实);
app.speedupdownsampledatabySpinner。HorizontalAlignment =“中心”;
app.speedupdownsampledatabySpinner。位置= (84 155 103 22);
app.speedupdownsampledatabySpinner。值= 1;
%创建toolorientationSpinnerLabel
app.toolorientationSpinnerLabel = uilabel (app.UIFigure);
app.toolorientationSpinnerLabel。HorizontalAlignment =“对”;
app.toolorientationSpinnerLabel。位置= (86 80 84 22);
app.toolorientationSpinnerLabel。文本=“工具取向”;
%创建toolorientationSpinner
app.toolorientationSpinner = uispinner (app.UIFigure);
app.toolorientationSpinner。限制= [0 360];
app.toolorientationSpinner。ValueChangedFcn = createCallbackFcn(应用,@toolorientationSpinnerValueChanged,真实);
app.toolorientationSpinner。位置= (86 105 84 22);
%创建OKButton
app.OKButton = uibutton (app.UIFigure,“推”);
app.OKButton。ButtonPushedFcn = createCallbackFcn(应用,@OKButtonPushed,真实);
app.OKButton。FontWeight =“大胆”;
app.OKButton。位置= [52 18 151 39];
app.OKButton。文本=“好吧”;
%显示所有组件创建后的图
app.UIFigure。可见=“上”;
结束
结束
%的应用程序创建和删除
方法(访问=公共)
%构建应用程序
函数应用= DialogApp(变长度输入宗量)
%创建UIFigure和组件
createcomponent(应用)
%注册应用程序与应用程序设计师
app.UIFigure registerApp(应用)
%执行启动功能
runStartupFcn (app, @ (app) startupFcn(应用,变长度输入宗量{:}))
如果nargout = = 0
清晰的应用程序
结束
结束
%执行的代码在应用程序删除
函数删除(应用)
%删除UIFigure当应用程序被删除
删除(app.UIFigure)
结束
结束
结束

登录置评。

答案(1)

亚当Danz
亚当Danz 2021年9月7日
编辑:亚当Danz 2021年9月8日
遵循这个演示(附加)。如果你有任何问题,让我们知道你在哪里,我们可以帮助你摆脱困境。
  • App1生成一个随机数时打开并打开App2包含一个按钮。
  • App2的起始函数包含一个2日App1处理输入。
  • App2被打开时,它使用App1处理提取的随机数App1和副本App2。
这是采取从App1 App2获取数据
1。App2: 添加一个启动功能和第二输入添加到启动功能 。下面的第一个条件关闭App2如果不了第二个输入。这种情况可能会更加严格,需要第二输入处理专门App1。接下来,随机数App2的提取App1和复制。
%在组件创建之后执行的代码
函数app1Handle app2StartupFcn(应用)
%需要2输入;如果缺失或空抛出错误
如果输入参数个数< 2 | | isempty (app2Handle)
关上(app.UIFigure)
错误(App2必须由App1打开。)
结束
%得到app1随机变量值
app1RandVar = app1Handle.RandomnumberEditField.Value;
%设置app2
app.Randomnumberfromapp1EditField。值= app1RandVar;
结束
2。App1: 按钮被分配一个回调函数打开App2,包括处理App1第二输入。
函数Openapp2ButtonPushed(应用程序、事件)
app2(应用)
结束
2的评论
亚当Danz
亚当Danz 2021年9月10日
你仍然可以使用逻辑与一些小的补充我的答案。
步骤2的我的回答打开app2 app2 app1,并将柄。
将值插入app2时,回调函数来响应更改的值可以使用应用程序将数据存储在app1处理。

登录置评。

类别

找到更多的在使用应用程序开发应用程序设计师帮助中心文件交换

下载188bet金宝搏


释放

R2021a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!