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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

管理组件、函数和属性

识别代码中的可编辑部分

编写 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>好的,我现在需要回答用户的问题:“这些代码应该放在代码视图的哪个部分”。用户之前询问了如何在MATLAB APP Designer的文本框中输出结果,现在想知道之前提供的代码应该放在APP Designer代码视图的哪个部分。 首先,我需要回忆一下MATLAB APP Designer的基本结构。APP Designer的代码视图分为几个部分:启动函数、组件属性、回调函数等。用户提供的代码示例中涉及到了按钮回调、数据显示等操作,所以需要确定这些代码应该放在哪个具体的回调函数里。 接下来,我要回顾之前的回答中提供的代码示例。例如,用户提到在按钮按下时执行计算并更新TextArea的值,这样的代码显然应该放在按钮的回调函数中。另外,有些代码可能涉及到初始化或数据处理,可能需要放在启动函数或自定义的函数中。 然后,我需要考虑用户可能的疑问点。用户可能不清楚如何找到或创建这些回调函数,或者如何将代码与具体的组件事件关联起来。因此,在回答中需要明确指出不同代码块对应的位置,并解释如何访问这些部分。 另外,要注意到用户提供的代码中有不同的场景,比如直接显示数值、矩阵、结构化信息、动态更新等,这些可能需要放在不同的回调函数或函数中。例如,动态更新的循环可能需要放在按钮回调中,而错误处理可能需要放在try-catch块内,同样位于回调函数里。 同时,还需要提到属性赋值的位置,例如设置TextArea的属性如Interpreter为HTML,这可能在初始化的时候设置,或者在回调函数中动态设置。需要说明这些属性设置可以在组件的回调函数中或启动函数中进行。 可能还需要解释如何通过App Designer的界面关联回调函数,例如双击按钮进入其回调函数,或者通过右键菜单添加回调。这有助于用户实际操作时找到正确的位置。 最后,要确保回答结构清晰,分步骤说明不同代码段的位置,可能用列表或示例说明每个部分对应的代码视图区域,并强调关键点,如回调函数的位置、启动函数的使用、自定义函数的创建等。同时,提醒用户注意代码的作用域和变量的传递,确保在回调函数中可以访问所需的变量和组件属性。 总结下来,回答需要分部分说明不同代码应放置的位置,如按钮回调函数、启动函数、自定义函数等,并给出具体的操作指导和示例,帮助用户正确地将代码整合到APP Designer项目中。</think>在MATLAB APP Designer中,代码的放置位置直接影响功能实现。以下是不同类型代码的**标准存放位置**指南: --- ### **1. 初始化代码(非必须)** - **位置**:`startupFcn` 函数(在 *回调 > 启动函数* 中) - **用途**: - 设置初始文本内容 - 配置文本框属性 - 预加载数据 ```matlab function startupFcn(app) % 初始化文本内容 app.TextArea.Value = "等待计算..."; % 启用HTML解析(若需要颜色/超链接) app.TextArea.Interpreter = 'html'; % 预加载数据 app.data = load('dataset.mat'); end ``` --- ### **2. 按钮触发操作** - **位置**:按钮的**回调函数**(如 `ButtonPushed`) - **访问方式**: 1. 设计视图双击按钮 2. 代码视图右侧**回调**列表选择对应事件 ```matlab function CalculateButtonPushed(app, event) % 核心计算逻辑 result = sum(app.data.values); % 更新文本框内容 app.TextArea.Value = sprintf('总和:%.2f', result); end ``` --- ### **3. 动态更新操作** - **位置**:计时器回调 或 循环内部 - **关键点**: - 必须使用`drawnow`强制刷新界面 - 避免在回调中直接使用长循环 ```matlab function StartMonitorButtonPushed(app, event) for k = 1:10 % 获取实时数据 current_value = readSensor(); % 追加显示新数据 app.TextArea.Value = [app.TextArea.Value; sprintf('时间戳:%s 值:%.2f',... datetime('now'), current_value)]; drawnow % 关键!强制界面刷新 pause(1) end end ``` --- ### **4. 错误处理代码** - **位置**:`try-catch` 块内(通常包裹主要逻辑) - **最佳实践**: - 在关键操作处添加错误捕获 - 通过文本框显示友好错误信息 ```matlab function ImportDataButtonPushed(app, event) try app.data = readtable(app.FilePath.Value); app.TextArea.Value = '数据导入成功'; catch ME app.TextArea.Value = sprintf('错误:%s', ME.message); end end ``` --- ### **5. 自定义函数** - **位置**:*公有函数* 或 *私有方法* 区域 - **调用方式**: - 公有函数:`app.functionName()` - 私有方法:直接调用 ```matlab % 公有函数部分 methods (Access = public) function updateDisplay(app, result) % 专业格式化函数 formatted_str = formatResult(result); app.TextArea.Value = formatted_str; end end % 私有方法部分 methods (Access = private) function str = formatResult(~, data) % 专用格式化逻辑 str = sprintf('处理结果:\n%s', mat2str(data)); end end ``` --- ### **6. 属性初始化** - **位置**:`properties` 代码块 - **典型应用**: - 定义显示模板 - 存储格式参数 ```matlab properties (Access = private) DisplayTemplate = "时间:%s 数值:%g\n"; % 预定义文本模板 NumberFormat = '%.4f'; % 统一数值格式 end ``` --- ### **关键位置速查表** | 代码类型 | 存放位置 | 访问权限 | |---------------------------|-----------------------------|-----------------| | 界面初始化 | `startupFcn` | 公有 | | 按钮/组件交互逻辑 | 组件回调函数 | 私有 | | 数据预处理 | 自定义公有函数 | 跨组件可用 | | 显示格式化工具函数 | 自定义私有方法 | 仅本类可用 | | 全局显示配置参数 | `properties` 代码块 | 指定访问权限 | | 异常处理 | `try-catch` 块 | 跟随主逻辑位置 | --- ### **操作演示流程** 1. 打开App Designer工程 2. 在设计视图添加按钮和文本框 3. 双击按钮自动跳转至对应回调函数 4. 在回调函数内编写核心逻辑代码 5. 如需复用代码: - 右键工程浏览器选择 *添加公有函数* - 或直接在`methods`块内添加私有方法 --- ### **常见错误规避** 1. **跨作用域访问问题**: - 错误写法:在函数内直接使用未传递的变量 - 正确做法:通过`app.`访问组件属性 2. **界面冻结问题**: - 错误写法:在回调中使用未加`drawnow`的长循环 - 正确方案:使用`timer`对象或异步操作 3. **格式混乱问题**: - 错误写法:直接用数值赋值`app.TextArea.Value` - 规范操作:始终通过`sprintf`/`compose`格式化 --- 通过合理组织代码位置,可以实现: - 清晰的代码结构 - 高效的界面响应 - 便捷的后期维护 - 可靠的数据传递 建议遵循 **"事件驱动"** 原则,将不同功能的代码严格放置在对应的组件回调函数中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值