欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在matlab中使用APP designer创建多窗口APP

程序员文章站 2024-01-24 15:40:52
...

如果是创建两个窗口的APP,则需要设计两个独立的APP,并实现两个APP之间的信息传递,示例如下,在Display Plot界面点击Options按钮,会弹出一个界面Options,可以选择图形的大小以及颜色,点击OK按钮,实现信息传递,Display Plot界面上图形的颜色和大小均会改变。

在matlab中使用APP designer创建多窗口APP

要实现上述功能的多界面APP,主要分为三步:1.将信息发送给对话框 2.将信息返回给主 App 3.关闭窗口时的管理任务

 

具体为以下几个步骤:

1.在主 和对话框 这两个独立的APP中分别放入相应的组件。涉及的组件主要有:坐标区,按钮,下拉框,编辑字段(数字) 这四个。

2.在对话框的界面,为 StartupFcn 回调定义输入参数,然后将代码添加到回调中。打开对话框 App 的代码视图。在编辑器选项卡上,点击 App 输入参数 在matlab中使用APP designer创建多窗口APP。在 App 输入参数对话框中,为您的输入参数输入以逗号分隔的变量名称列表。将其中一个输入指定为存储主 App 对象的变量。然后点击确定

StartupFcn函数,是一个初始值设定函数,在 App 启动时、但在用户与 UI 进行交互之前执行。此函数称为 StartupFcn 回调,它非常适用于设置默认值、初始化变量或执行影响 App 初始状态的命令。例如,您可以使用 StartupFcn 回调来显示默认绘图或显示表中默认值的列表

在matlab中使用APP designer创建多窗口APP

将代码添加到 StartupFcn 回调中,以存储 mainapp 的值。

            % Store main app in property for CloseRequestFcn to use
            app.CallingApp = mainapp;
            
            % Update UI with input values
            app.EditField.Value = sz;
            app.DropDown.Value = c;

 2.从主 App 的回调中调用对话框 App。打开主 App 的代码视图,然后为选项按钮添加一个回调函数。此回调禁用选项按钮,以防止用户打开多个对话框。接下来,它获取要传递给对话框的值,然后使用输入参数和输出参数调用对话框 App。输出参数是对话框 App 对象。

            % Disable Plot Options button while dialog is open
            app.OptionsButton.Enable = 'off';
            
            % Open the options dialog and pass inputs
            app.DialogApp = DialogAppExample(app, app.CurrentSize, app.CurrentColormap);

3.在主 App 中定义一个属性,以存储对话框 App。在主 App 保持打开的情况下,创建一个名为 DialogApp 的私有属性。在编辑器选项卡上选择属性 > 私有属性。然后,将 properties 模块中的属性名称更改为 DialogApp

properties (Access = private)
       DialogApp % Dialog box app
end

4.在主 App 中创建一个公共函数,以更新 UI。打开主 App 的代码视图,然后在编辑器选项卡上选择函数 > 公共函数

将默认函数名称更改为所需的名称,并为您希望从对话框传递给主 App 的每个选项添加输入参数。app 参数必须是第一个,因此请在此参数后指定其他参数。然后将代码添加到处理输入并更新主 App 的函数中。

function updateplot(app, sz, c)
            % Store inputs as properties
            app.CurrentSize = sz;
            app.CurrentColormap = c;
            
            % Update plot 
            Z = peaks(sz);
            surf(app.UIAxes,Z);
            colormap(app.UIAxes,c);
            
            % Re-enable the Plot Options button
            app.OptionsButton.Enable = 'on';
        end

5.在对话框 App 中创建一个属性,以存储主 App。打开对话框 App 的代码视图,然后创建一个名为 CallingApp 的私有属性。在编辑器选项卡上选择属性 > 私有属性。然后,将 properties 模块中的属性名称更改为 CallingApp

properties (Access = private)
        CallingApp   % Main app object
    end

6.从对话框 App 的回调中调用公共函数。在对话框 App 保持打开的情况下,为确定按钮添加一个回调函数。

在此回调中,将 CallingApp 属性和用户的选择传递给公共函数。然后调用 delete 函数以关闭对话框。

           % Call main app's public function
            updateplot(app.CallingApp, app.EditField.Value, app.DropDown.Value);
            
            % Delete the dialog box
            delete(app)

7.打开对话框 App 的代码视图,右键点击组件浏览器中的 app.UIFigure 对象,然后选择回调 > 添加 CloseRequestFcn 回调。然后添加重新启用主 App 中的按钮并关闭对话框 App 的代码。

function DialogAppCloseRequest(app,event)
   % Enable the Plot Options button in main app
   app.CallingApp.OptionsButton.Enable = 'on';
            
   % Delete the dialog box 
   delete(app)             
end

8.打开主 App 的代码视图,右键点击组件浏览器中的 app.UIFigure 对象,然后选择回调 > 添加 CloseRequestFcn 回调。然后添加删除这两个 App 的代码。

function MainAppCloseRequest(app,event)
   % Delete both apps
   delete(app.DialogApp)
   delete(app)              
end

 

官网:https://ww2.mathworks.cn/help/matlab/creating_guis/creating-multiwindow-apps-in-app-designer.html