主要内容

Toolbar

工具栏 UI 组件

  • Toolbar UI component

说明

工具栏 UI 组件在图窗窗口顶部显示水平按钮列表。在创建工具栏后,使用 Toolbar 对象修改其外观和行为。

创建对象

使用 uitoolbar 函数在图窗中创建一个工具栏。

属性

全部展开

颜色

背景颜色,指定为 RGB 三元组、十六进制颜色代码或下表中列出的颜色选项之一。

RGB 三元组和十六进制颜色代码对于指定自定义颜色非常有用。

  • RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1] 范围内,例如 [0.4 0.6 0.7]

  • 十六进制颜色代码是字符向量或字符串标量,以井号 (#) 开头,后跟三个或六个十六进制数字,范围可以是 0F。这些值不区分大小写。因此,颜色代码 "#FF8800""#ff8800""#F80""#f80" 是等效的。

此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项、等效 RGB 三元组和十六进制颜色代码。

颜色名称短名称RGB 三元组十六进制颜色代码外观
"red""r"[1 0 0]"#FF0000"

Sample of the color red

"green""g"[0 1 0]"#00FF00"

Sample of the color green

"blue""b"[0 0 1]"#0000FF"

Sample of the color blue

"cyan" "c"[0 1 1]"#00FFFF"

Sample of the color cyan

"magenta""m"[1 0 1]"#FF00FF"

Sample of the color magenta

"yellow""y"[1 1 0]"#FFFF00"

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

下表列出了浅色和深色主题中绘图的默认调色板。

调色板调色板颜色

"gem" - 浅色主题默认值

在 R2025a 之前的版本中: 大多数绘图默认使用这些颜色。

Sample of the "gem" color palette

"glow" - 深色主题默认值

Sample of the "glow" color palette

您可以使用 orderedcolorsrgb2hex 函数获取这些调色板的 RGB 三元组和十六进制颜色代码。例如,获取 "gem" 调色板的 RGB 三元组并将其转换为十六进制颜色代码。

RGB = orderedcolors("gem");
H = rgb2hex(RGB);

在 R2023b 之前的版本中: 使用 RGB = get(groot,"FactoryAxesColorOrder") 获取 RGB 三元组。

在 R2024a 之前的版本中: 使用 H = compose("#%02X%02X%02X",round(RGB*255)) 获取十六进制颜色代码。

交互性

可见性状态,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

  • 'on' - 显示对象。

  • 'off' - 隐藏对象而不删除它。您仍然可以访问不可见 UI 组件的属性。

要使您的 App 更快地启动,请将不需要在启动时出现的所有 UI 组件的 Visible 属性设置为 'off'

设置此属性对此类型的对象没有影响。

回调

组件创建函数,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参量。

  • 包含有效 MATLAB® 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅Specify a Callback Function

此属性指定要在 MATLAB 创建组件时执行的回调函数。MATLAB 将在执行 CreateFcn 回调之前初始化所有的组件属性值。如果不指定 CreateFcn 属性,则 MATLAB 执行默认的创建函数。

可在您的 CreateFcn 代码中使用 gcbo 函数获取要创建的组件对象。

对现有组件对象设置 CreateFcn 属性没有任何作用。

组件删除函数,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参量。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅Specify a Callback Function

DeleteFcn 属性指定要在 MATLAB 删除组件时(例如,当用户关闭窗口时)执行的回调函数。MATLAB 会在销毁组件对象的属性之前执行 DeleteFcn 回调。如果不指定 DeleteFcn 属性,则 MATLAB 执行默认的删除函数。

可在您的 DeleteFcn 代码中使用 gcbo 函数获取要删除的组件对象。

回调执行控件

回调中断,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

Interruptible 属性确定是否可以中断运行中回调。有以下两种回调状态要考虑:

  • 运行中回调是当前正在执行的回调。

  • 中断回调是试图中断运行中回调的回调。

每当 MATLAB 调用回调时,回调都会试图中断正在运行的回调(如果存在)。运行中回调所属对象的 Interruptible 属性决定着是否允许中断:

  • 'on' 允许其他回调中断对象的回调。中断发生在 MATLAB 处理队列的下一个位置,例如当存在 drawnowfiguregetframewaitforpause 时。

    • 如果运行中回调包含以上命令之一,则 MATLAB 将在此时停止执行回调并执行中断回调。当中断回调完成时,MATLAB 将恢复执行运行中回调。

    • 如果运行中回调不包含以上命令之一,则 MATLAB 执行完当前回调,不会出现任何中断。

  • 'off' 阻止所有中断尝试。由中断回调所属的对象的 BusyAction 属性决定是放弃该中断回调还是将其放入队列中。

注意

回调的中断和执行在以下情况下会有不同的表现:

  • 如果中断回调是 DeleteFcnCloseRequestFcnSizeChangedFcn 回调,则无论是否存在 Interruptible 属性值都会发生中断。

  • 如果运行中回调当前正在执行 waitfor 函数,则无论是否存在 Interruptible 属性值都会发生中断。

  • Timer 对象根据排定时间执行,而不管 Interruptible 属性值如何。

  • 发生中断时,MATLAB 不保存属性状态或显示内容。例如,gcagcf 命令返回的对象可能会在另一个回调执行时发生改变。

有关演示 InterruptibleBusyAction 属性如何影响程序行为的示例,请参阅Interrupt Callback Execution

回调排队,指定为 'queue'(默认值)或 'cancel'BusyAction 属性决定 MATLAB 如何处理中断回调的执行。有以下两种回调状态要考虑:

  • 运行中回调是当前正在执行的回调。

  • 中断回调是试图中断运行中回调的回调。

中断回调的来源的 BusyAction 属性决定 MATLAB 如何处理其执行。BusyAction 属性具有下列值:

  • 'queue' - 将中断回调放入队列中,以便在运行中回调执行完毕后进行处理。

  • 'cancel' - 不执行中断回调。

无论何时 MATLAB 调用回调,该回调都会试图中断正在执行的回调。运行中回调所属对象的 Interruptible 属性确定是否允许回调。如果 Interruptible 设置为:

  • on - 在下一个时间点(MATLAB 处理队列时)发生中断。这是默认设置。

  • off - BusyAction 属性(中断回调所属对象的属性)确定 MATLAB 是将中断回调纳入队列还是将其忽略。

有关演示 BusyActionInterruptible 属性如何影响程序行为的示例,请参阅Interrupt Callback Execution

此 属性 为只读。

删除状态,以 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值形式返回。

DeleteFcn 回调开始执行时,MATLAB 会将 BeingDeleted 属性设置为 'on'BeingDeleted 属性将一直保持 'on' 设置状态,直到组件对象不再存在为止。

在查询或修改对象之前,请先检查其 BeingDeleted 属性的值,以确认它不是待删除项。

此属性对此类型的对象没有影响。

父级/子级

父对象,指定为 Figure 对象。如果未指定父图窗,则 MATLAB 调用 figure 函数以创建一个图窗来用作父图窗。

通过将此属性设置为目标 Figure 对象,可将 Toolbar 对象移到不同的图窗中。

Toolbar 的子级,以空 GraphicsPlaceholder 或组件对象的一维数组形式返回。Toolbar 对象的子级是 PushToolToggleTool 对象。

不能使用 Children 属性添加或删除子级。使用该属性查看子级列表或对子级重新排序。此数组中子级的顺序反映了工具在工具栏中从右到左的显示顺序。这意味着最右边的工具在列表的顶部,最左边的工具在列表的底部。例如,由 Children 属性返回的此工具顺序表示按钮工具出现在工具栏中切换工具的左侧。

toolOrder = tb.Children
toolOrder = 

  2×1 graphics array:

  ToggleTool
  PushTool

要向该列表中添加子级,请将子组件的 Parent 属性设置为 Toolbar 对象。

HandleVisibility 属性设置为 'off' 的对象不会列在 Children 属性中。

对象句柄的可见性,指定为 'on''callback''off'

此属性控制对象在其父级的子级列表中的可见性。当对象未显示在其父级的子级列表中时,通过搜索对象层次结构或查询属性来获取对象的函数不会返回该对象。这些函数包括 getfindobjgcagcfgconewplotclaclfcloseHandleVisibility 属性还控制对象句柄是否显示在父图窗的 CurrentObject 属性中。对象即使在不可见时也有效。如果可以访问某个对象,则可以设置和获取其属性,并将其传递给针对对象进行运算的任意函数。

HandleVisibility 值描述
'on'对象句柄始终可见。
'callback'对象句柄在回调或回调所调用的函数中可见,但在从命令行调用的函数中不可见。此选项阻止通过命令行访问对象,但允许回调函数访问对象。
'off'对象句柄始终不可见。该选项用于防止另一函数无意中对 UI 进行更改。将 HandleVisibility 设置为 'off' 可在执行该函数时暂时隐藏句柄。

标识符

此 属性 为只读。

图形对象的类型,以 'uitoolbar' 形式返回。

对象标识符,指定为字符向量或字符串标量。您可以指定唯一的 Tag 值作为对象的标识符。如果需要访问您代码中其他位置的对象,可以使用 findobj 函数基于 Tag 值搜索对象。

用户数据,指定为任何数组。指定 UserData 对在 App 内共享数据很有用。有关详细信息,请参阅在回调之间共享数据

示例

全部折叠

更改工具栏中从左到右的工具顺序。在本例中,颠倒 UI 图窗工具栏中按钮工具和切换工具的顺序。

创建一个 UI 图窗。向其中添加一个工具栏。然后,在工具栏中添加按钮工具和切换工具。

fig = uifigure;
tb = uitoolbar(fig);
pt = uipushtool(tb);
tt = uitoggletool(tb);

UI figure with a push tool and toggle tool in a toolbar that both display the default icon.

在工具栏中创建一个按钮工具。将 Icon 属性值设置为图像文件 matlabicon.gif

pt.Icon = fullfile(matlabroot,'toolbox','matlab','icons','matlabicon.gif');

Membrane logo added to the push tool. The push tool is to the left of the toggle tool.

创建一个蓝色真彩色图像数组。将 Icon 属性值设置为此数组,以在切换工具中显示蓝色方形图标。

ttImage = zeros(16,16,3);
ttImage(:,:,3) = ones(16);
tt.Icon = ttImage;

Blue square added to the toggle tool.

查询工具栏的 Children 属性。在此数组中返回的子级的顺序反映了工具在工具栏中从右到左的显示顺序。切换工具是最右边的工具,出现在列表的顶部(数组的第一个元素)。

oldToolOrder = tb.Children
oldToolOrder = 

  2×1 graphics array:

  ToggleTool
  PushTool

通过调用 flipud 函数翻转在 tb.Children 返回的数组中元素的顺序,以颠倒工具的顺序。将 Children 属性值设置为此新工具顺序。按钮工具现在出现在工具栏中切换工具的右侧。

newToolOrder = flipud(oldToolOrder);
tb.Children = newToolOrder;

Blue toggle tool appears to the left of the push tool in the toolbar.

版本历史记录

在 R2006a 之前推出

全部展开