在 App 设计工具的代码视图中管理代码

本文详细介绍了MATLABApp开发中的关键要素,包括管理组件、函数、属性、回调,以及如何在App中共享数据、添加输入参数和帮助文本。此外,还涵盖了代码视图的个性化设置、错误处理和调试技巧。

目录

管理组件、函数和属性

识别代码中的可编辑部分

编写 App

管理 UI 组件

管理回调

在 App 中共享数据

在多个位置运行的单一源代码

创建输入参数

为您的 App 添加帮助文本

限制您的 App 一次只运行一个实例

修复代码问题和运行时错误

个性化代码视图外观

更改颜色设置

更改制表符预设项


        代码视图提供了 MATLAB® 编辑器中的大多数编程功能。它还提供了丰富的功能,可帮助浏览代码,避免许多繁琐的任务。例如,可以通过在搜索栏中键入部分名称来搜索回调。点击某个搜索结果,编辑器将滚动到该回调的定义。此外,如果更改了某个回调的名称,App 设计工具会自动更新代码中对该回调的所有引用。

管理组件、函数和属性

代码视图有三个窗格可帮助您管理代码的不同方面。下表介绍了每一个窗格。

窗格名称窗格外观窗格功能
组件浏览器

Component Browser showing the property inspector for a button component.

  • 上下文菜单 - 右键点击列表中的组件以显示上下文菜单,该菜单包含用于删除或重命名组件、添加回调或显示帮助的选项。选择在组件浏览器中包括组件标签选项,将显示分组的组件标签。

  • 搜索栏 - 通过在搜索栏中键入部分名称,即可快速定位组件。

  • 组件选项卡 - 使用此选项卡查看或更改当前所选组件的属性值。还可以通过在此选项卡顶部的搜索栏中键入部分名称来搜索属性。

  • 回调选项卡 - 使用此选项卡管理所选组件的回调。

代码浏览器

Code Browser showing the Callbacks tab with three callbacks.

  • 回调函数属性选项卡 - 使用这些选项卡添加、删除或重命名 App 中的任何回调、辅助函数或自定义属性。点击回调函数选项卡上的某个项目,编辑器将滚动到代码中的对应部分。通过选择要移动的回调,然后将回调拖放到列表中的新位置,来重新排列回调的顺序。此操作会同时在编辑器中调整回调位置。

  • 搜索栏 - 通过在搜索栏中键入部分名称,即可快速定位回调、辅助函数或属性。

App 布局

App Layout showing a thumbnail of an app that contains a radio button group, a slider and a push button.

  • App 缩略图 - 使用缩略图可在具有许多组件的复杂大型 App 中查找组件。在缩略图中选择某个组件,即会在组件浏览器中选择该组件。

识别代码中的可编辑部分

        在代码视图编辑器中,代码中的有些部分是可编辑的,有些则不可编辑。不可编辑部分由 App 设计工具生成和管理,可编辑部分包括:

  • 定义的函数(例如,回调和辅助函数)的主体

  • 自定义属性定义

在默认颜色方案中,代码的不可编辑部分以灰色显示,可编辑部分以白色显示。

App code. A properties block and body of a function have a white background, while a methods block and function declaration have a gray background.

编写 App

        App 设计工具将您的 App 定义为 MATLAB 类。要创建 App,并不需要了解类或面向对象的编程,因为 App 设计工具会管理代码的这些方面。但是,App 设计工具中的编程所需要的工作流不同于严格使用函数的工作流。可以在工具条的资源选项卡上点击显示提示 

 按钮,随时查看此工作流的总结。

管理 UI 组件

        在App 中添加 UI 组件时,App 设计工具会为组件指定一个默认的名称。使用此名称(包括app前缀)可在代码中引用该组件。可以通过双击组件浏览器中的名称并键入新名称来更改组件的名称。当更改组件名称时,App 设计工具会自动更新对该组件的所有引用。

Component Browser showing the name of a figure and a button component. The name of the button is app.Button, and the text "Button" is highlighted and editable.

        要在您的代码中使用组件的名称,较省时间的方法是从组件浏览器中复制名称。将光标放在代码的可编辑区域中要添加组件名称的位置。然后,在组件浏览器中,右键点击组件名称并选择在光标处插入。也可以将组件名称从列表拖到代码中。

Context menu associated with the app.Button component. The context menu includes the Insert at Cursor option.

        要删除组件,请在组件浏览器中选择其名称,然后按 Delete 键。

管理回调

        要使组件响应用户交互,可以添加回调。右键点击组件浏览器中的组件,然后选择回调 > 添加 (回调属性) 回调

        如果从 App 中删除组件,仅当关联的回调未被编辑且未与其他组件共享时,App 设计工具才会删除关联的回调。

        要手动删除回调,请在代码浏览器回调选项卡上选择回调名称,然后按 Delete 键。

在 App 中共享数据

        要存储数据并在不同的回调之间共享这些数据,请创建一个属性。例如,如果希望 App 读取数据文件并允许 App 中的不同回调访问该数据,请在加载文件时将数据存储在一个属性中。

要创建属性,请在编辑器选项卡上展开属性 

 下拉列表,然后选择私有属性公共属性。App 设计工具将创建一个模板属性定义,并将光标放在该定义旁边。根据需要更改属性的名称。

properties (Access = public)
        X % Average cost
end

        要在代码中引用该属性,请使用语法 app.PropertyName。例如,app.X 引用名为 X 的属性。

在多个位置运行的单一源代码

        如果要在 App 中的多个位置执行同一个代码块,可以创建辅助函数。例如,可能想创建一个辅助函数以在用户更改编辑字段中的数字或选择下拉列表中的项后更新绘图。通过创建辅助函数,可以使常用命令执行同一个来源的代码,而不用维护几组多余的代码。

要添加辅助函数,请在编辑器选项卡上展开函数 

 下拉列表,然后选择私有函数公共函数。App 设计工具将创建一个模板函数,并将光标放在该函数的主体中。

        要删除辅助函数,请在代码浏览器函数选项卡上选择函数名称,然后按 Delete 键。

创建输入参数

        要在 App 中添加输入参数,请在编辑器选项卡上点击 App 输入参数 

。输入参数通常用于创建具有多个窗口的 App。

为您的 App 添加帮助文本

        添加 App 摘要和描述,以向用户提供有关App 的信息。要添加帮助文本或编辑现有帮助文本,请点击App 帮助文本 

。使用“App 帮助文本”对话框可以指定 App 的简短摘要,以及对该 App 的功能和使用方法的更详细解释。App 设计工具可将此帮助文本以注释形式添加到 App 定义语句中。

        要在 MATLAB 命令行窗口中显示 App 帮助文本,请调用 help 函数并指定 App 名称。App 帮助文本会出现在 App 文档页的顶部。可以通过调用doc函数并指定App名称来查看 App 的文档页。

限制您的 App 一次只运行一个实例

        在 App 设计工具中创建 App 时,可以在 App 的两种运行行为之间进行选择:

  • 一次只允许运行一个 App 实例。

  • 允许同时运行 App 的多个实例。这是默认行为。

        要更改 App 的运行行为,请从组件浏览器中选择 App 节点。然后,从 App 选项卡的代码选项部分,选中或清除单个运行实例

Component Browser Inspector for the app node. The Code Options section is expanded and shows the Single Running Instance check box.

        当选中单个运行实例并且多次运行该 App 时,MATLAB 会重用现有实例并将其前置,而不是创建一个新实例。如果清除此选项,则 MATLAB 会在每次运行该 App 时都创建一个新实例,并继续运行现有实例。这些运行行为适用于您从 MATLAB 工具条上的 App 选项卡或从命令行窗口运行的 App。

        当从 App 设计工具运行 App 时,无论此选项处于选中还是清除状态,其行为都不会更改。App 设计工具在创建新的 App 实例之前始终会先关闭该 App 的现有实例。

修复代码问题和运行时错误

与 MATLAB 编辑器一样,代码视图编辑器也提供代码分析器消息,帮助您发现代码中的错误。

Code Analyzer message for an edit field callback. The code in the function body sets EditField.Value. The message says "Use app.EditField to reference a property of app" and includes a button labeled "Fix".

如果直接从 App 设计工具中运行App(通过点击 

 运行),倘若在运行时发生任何错误,App 设计工具会在代码中突出显示错误的来源。要隐藏错误消息,请点击错误指示符(红色圆圈)。要使错误指示符消失,请更正代码并保存更改。

Error message. The line of code with the error has an error indicator next to it.

        还可以通过在 App 设计工具中以交互方式调试 App 代码来诊断代码中的问题。有

个性化代码视图外观

        可以自定义代码在代码视图编辑器中的显示方式。要更改您的代码视图预设项,请转至 MATLAB 桌面的主页选项卡。在环境部分中,点击 

 预设

更改颜色设置

        要更改代码的可编辑部分的颜色设置并自定义语法高亮,请选择 MATLAB > 颜色,并调整桌面工具颜色和 MATLAB 语法高亮颜色。这些设置会同时影响 App 设计工具的代码视图编辑器和 MATLAB 编辑器。

        要更改代码的不可编辑部分的背景颜色,请选择 MATLAB > App 设计工具,并调整只读背景颜色。仅在 MATLAB > 颜色预设项中的使用系统颜色选项未选中时,才能更改此设置。

更改制表符预设项

        要在代码视图编辑器中指定制表符和缩进的大小,请选择 MATLAB > 编辑器/调试器 > Tab 键。在此处,可以指自定义制表符和缩进的大小,以及有关制表符行为的详细信息。这些预设项会同时影响 App 设计工具的代码视图编辑器和 MATLAB 编辑器。

<think>在MATLABAppDesigner中进行代码视图的修改,主要涉及两个方面:一是直接在代码视图中编写或修改回调函数和自定义方法;二是理解AppDesigner生成的代码结构以避免错误修改。以下是详细步骤和注意事项:###步骤1:进入代码视图1.在AppDesigner界面中,点击顶部工具栏的"代码视图"按钮(</>图标)2.或使用快捷键`Ctrl+Shift+C`###步骤2:理解代码结构典型的AppDesigner代码框架如下:```matlabclassdefmyapp< matlab.apps.AppBase%属性声明(UI组件和变量)properties(Access=private)Component1%描述Component2%描述PrivateData%私有数据end%包含所有回调的方法methods(Access=private)%初始化构造functionresults=startupFcn(app)%初始化代码end%按钮回调函数functionButtonPushed(app,event)%回调代码end%自定义方法functioncustomFunction(app,args)%自定义方法代码endend%自动生成的界面初始化方法methods(Access=protected)functioncreateComponents(app)%自动生成UI组件的代码(勿手动修改)endendend```###步骤3:安全修改区域可安全修改的代码区域:1.**私有方法区**(`methods(Access=private)`):-所有回调函数(如按钮点击、下拉菜单选择等)-自定义私有方法2.**公有/保护方法区**:-可添加自定义公有方法(供外部调用)-`setup`方法(在组件创建后执行初始化)3.**属性声明区**:-添加自定义属性(用于存储应用数据)-修改现有属性的访问权限###步骤4:禁止修改区域**严禁修改的区域**(标有注释"Codethatexecutesaftercomponentcreation"):```matlabfunctionsetup(app)createComponents(app);%自动生成的组件创建函数%在此后添加自定义初始化代码app.customInitialization();%可在此添加自定义初始化end```-注意:`createComponents(app)`函数内的代码**绝对不要手动修改**,否则会导致界面崩溃###步骤5:添加自定义回调1.**添加新回调函数**:-在设计视图添加新组件并指定回调函数名-或直接在代码视图的`privatemethods`区域编写新函数2.**手动添加回调示例**:```matlabmethods(Access=private)%新增自定义回调functionSliderValueChanged(app,event)value=app.Slider.Value;app.Label.Text=num2str(value);endend```###步骤6:修改现有回调1.在代码视图中找到目标回调函数(命名格式为`组件名_事件名`)2.在函数体内修改逻辑代码(保持函数声明不变)```matlabfunctionButtonPushed(app,event)%修改前:disp('Clicked');%修改后:app.EditField.Value='ButtonClicked!';end```###步骤7:添加自定义方法在`privatemethods`区块下添加:```matlabmethods(Access=private)functionprocessData(app,data)%自定义数据处理result=data*2;app.ResultLabel.Text=num2str(result);endend```###步骤8:保存和测试1.使用`Ctrl+S`保存修改2.点击"运行"按钮(▶)测试修改效果3.如果出错,使用"撤销"(Ctrl+Z)恢复###注意事项:1.**自动代码标记**:-设计视图生成的代码带有标记`%Auto-generated`-这些代码在返回设计视图时会被重写2.**组件引用规则**:-组件必须通过`app.组件名`访问(如`app.Button`)-新增组件需在属性区声明3.**常见错误修复**:```matlab%错误:未定义属性%解决:在属性声明区添加"MyComponentmatlab.ui.control.Button"%错误:无效回调%解决:检查回调函数名是否与组件指定的回调名完全一致```###高级技巧:代码保护如需避免误操作自动生成代码,使用以下结构分隔:```matlabmethods(Access=private)%自动生成的回调----%不要修改这部分的函数声明%自定义代码区----%在此添加自定义函数end```§§相关问题§§:1.如何在AppDesigner中添加键盘快捷键回调?2.AppDesigner中如何实现拖放文件功能?3.在MATLABAppDesigner中如何调用外部.m文件函数?4.AppDesigner如何导出独立桌面应用?</think> ### 在MATLAB App Designer中修改代码视图的详细指南 在MATLAB App Designer中进行代码视图修改,需要遵循特定流程以避免破坏界面与代码的同步关系。以下是操作步骤和注意事项: --- ### 代码修改步骤 #### 步骤1:进入代码视图 1. **打开方式**: ```matlab % 方法1:从设计视图切换 appdesigner(appFileName) % 打开App Designer后点击右上角的"代码视图"按钮 % 方法2:直接编辑源文件 edit MyApp.mlapp % 在编辑器中直接修改mlapp文件 ``` 2. **注意事项**: - 自动生成的组件代码区(有`% Auto-generated`注释)**禁止手动修改** - 只能修改用户代码区域(回调函数和自定义方法) --- #### 步骤2:理解代码结构 典型App代码框架: ```matlab classdef MyApp < matlab.apps.AppBase % 公共属性 (UI组件) properties (Access = public) UIFigure matlab.ui.Figure Button matlab.ui.control.Button end % 私有属性 (数据) properties (Access = private) Counter = 0 % 示例私有数据 end % 初始化与组件创建 (自动生成代码 - 不要修改!) methods (Access = private) % 创建组件的自动生成代码区域 (勿动) end % 用户可修改区域 - 回调函数 methods (Access = private) % 按钮回调示例 function ButtonPushed(app, event) % === 用户可修改区域开始 === app.Counter = app.Counter + 1; app.Label.Text = ['点击次数: ' num2str(app.Counter)]; % === 用户可修改区域结束 === end % 自定义方法示例 function resetCounter(app) app.Counter = 0; % 用户自定义方法 end end end ``` --- #### 步骤3:安全修改代码 1. **添加回调函数**: ```matlab % 在设计视图中右键组件 → 添加回调 → 选择事件类型 % 系统会自动生成函数框架,只需填充逻辑 function SliderValueChanged(app, event) value = app.Slider.Value; app.EditField.Value = num2str(value); % 自定义代码 end ``` 2. **创建自定义方法**: ```matlab methods (Access = private) function updatePlot(app) % 自定义数据更新方法 x = linspace(0, 2*pi, 100); y = sin(x + app.PhaseSlider.Value); plot(app.UIAxes, x, y); end end ``` 3. **添加键盘快捷键**(示例): ```matlab function UIFigureKeyPress(app, event) % 快捷键处理 switch event.Key case 'r' app.resetCounter(); % 调用自定义方法 case 'escape' app.UIFigure.Visible = 'off'; end end ``` --- #### 步骤4:代码与界面同步规则 | **操作类型** | **安全操作** | **危险操作** | |--------------------|---------------------------------------|----------------------------------------| | **添加新组件** | 只能通过设计视图添加 | 在代码视图直接声明新组件 | | **修改组件属性** | 通过回调函数修改动态属性 | 修改`createComponents()`中的初始化代码 | | **添加回调** | 通过设计视图添加后修改代码 | 直接创建新回调函数而不绑定组件 | | **自定义方法** | 在用户代码区域任意添加 | 修改自动生成的方法签名 | --- #### 步骤5:调试与错误处理 1. **常见错误修复**: ```matlab % 错误: 无法识别的属性 % 原因: 代码中引用了未声明的组件 % 解决: 在设计视图添加对应组件 % 错误: 回调未触发 % 原因: 回调函数签名错误 % 正确示例: function ButtonPushed(app, event) % 必须包含app和event参数 ``` 2. **调试技巧**: ```matlab % 在回调中添加断点 function ButtonPushed(app, event) keyboard; % 进入调试模式 % 检查app对象结构: % >> disp(app) end ``` --- ### 重要警告 1. **绝对不要修改的区域**: ```matlab methods (Access = private) function createComponents(app) % AUTO-GENERATED CODE - DO NOT EDIT !!! % 此区域所有代码都由App Designer自动维护 app.UIFigure = uifigure(...); app.Button = uibutton(...); end end ``` 2. **安全修改示例**: ```matlab % 正确: 在回调中修改组件属性 function ButtonPushed(app, event) app.Button.Text = '已点击'; % OK end % 错误: 直接修改初始化代码 function createComponents(app) app.Button.Text = '提交'; % 将导致界面崩溃 end ``` --- ### 最佳实践建议 1. **组件命名规范**: ```matlab % 使用前缀标识组件类型 app.btnSubmit % 按钮 app.lblStatus % 标签 app.axPlot % 坐标区 ``` 2. **数据管理技巧**: ```matlab % 在startupFcn中初始化数据 methods (Access = private) function startupFcn(app) app.DataTable = readtable('data.csv'); end end ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值