Toolbar
工具栏 UI 组件

说明
工具栏 UI 组件在图窗窗口顶部显示水平按钮列表。在创建工具栏后,使用 Toolbar 对象修改其外观和行为。
创建对象
使用 uitoolbar 函数在图窗中创建一个工具栏。
属性
颜色
背景颜色,指定为 RGB 三元组、十六进制颜色代码或下表中列出的颜色选项之一。
RGB 三元组和十六进制颜色代码对于指定自定义颜色非常有用。
RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于
[0,1]范围内,例如[0.4 0.6 0.7]。十六进制颜色代码是字符向量或字符串标量,以井号 (
#) 开头,后跟三个或六个十六进制数字,范围可以是0到F。这些值不区分大小写。因此,颜色代码"#FF8800"与"#ff8800"、"#F80"与"#f80"是等效的。
此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项、等效 RGB 三元组和十六进制颜色代码。
| 颜色名称 | 短名称 | RGB 三元组 | 十六进制颜色代码 | 外观 |
|---|---|---|---|---|
"red" | "r" | [1 0 0] | "#FF0000" |
|
"green" | "g" | [0 1 0] | "#00FF00" |
|
"blue" | "b" | [0 0 1] | "#0000FF" |
|
"cyan" | "c" | [0 1 1] | "#00FFFF" |
|
"magenta" | "m" | [1 0 1] | "#FF00FF" |
|
"yellow" | "y" | [1 1 0] | "#FFFF00" |
|
"black" | "k" | [0 0 0] | "#000000" |
|
"white" | "w" | [1 1 1] | "#FFFFFF" |
|
下表列出了浅色和深色主题中绘图的默认调色板。
| 调色板 | 调色板颜色 |
|---|---|
在 R2025a 之前的版本中: 大多数绘图默认使用这些颜色。 |
|
|
|
您可以使用 orderedcolors 和 rgb2hex 函数获取这些调色板的 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 属性决定着是否允许中断:
注意
回调的中断和执行在以下情况下会有不同的表现:
有关演示 Interruptible 和 BusyAction 属性如何影响程序行为的示例,请参阅Interrupt Callback Execution。
回调排队,指定为 'queue'(默认值)或 'cancel'。BusyAction 属性决定 MATLAB 如何处理中断回调的执行。有以下两种回调状态要考虑:
运行中回调是当前正在执行的回调。
中断回调是试图中断运行中回调的回调。
中断回调的来源的 BusyAction 属性决定 MATLAB 如何处理其执行。BusyAction 属性具有下列值:
'queue'- 将中断回调放入队列中,以便在运行中回调执行完毕后进行处理。'cancel'- 不执行中断回调。
无论何时 MATLAB 调用回调,该回调都会试图中断正在执行的回调。运行中回调所属对象的 Interruptible 属性确定是否允许回调。如果 Interruptible 设置为:
on- 在下一个时间点(MATLAB 处理队列时)发生中断。这是默认设置。off-BusyAction属性(中断回调所属对象的属性)确定 MATLAB 是将中断回调纳入队列还是将其忽略。
有关演示 BusyAction 和 Interruptible 属性如何影响程序行为的示例,请参阅Interrupt Callback Execution。
此 属性 为只读。
删除状态,以 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值形式返回。
当 DeleteFcn 回调开始执行时,MATLAB 会将 BeingDeleted 属性设置为 'on'。BeingDeleted 属性将一直保持 'on' 设置状态,直到组件对象不再存在为止。
在查询或修改对象之前,请先检查其 BeingDeleted 属性的值,以确认它不是待删除项。
此属性对此类型的对象没有影响。
父级/子级
父对象,指定为 Figure 对象。如果未指定父图窗,则 MATLAB 调用 figure 函数以创建一个图窗来用作父图窗。
通过将此属性设置为目标 Figure 对象,可将 Toolbar 对象移到不同的图窗中。
Toolbar 的子级,以空 GraphicsPlaceholder 或组件对象的一维数组形式返回。Toolbar 对象的子级是 PushTool 和 ToggleTool 对象。
不能使用 Children 属性添加或删除子级。使用该属性查看子级列表或对子级重新排序。此数组中子级的顺序反映了工具在工具栏中从右到左的显示顺序。这意味着最右边的工具在列表的顶部,最左边的工具在列表的底部。例如,由 Children 属性返回的此工具顺序表示按钮工具出现在工具栏中切换工具的左侧。
toolOrder = tb.Children
toolOrder = 2×1 graphics array: ToggleTool PushTool
要向该列表中添加子级,请将子组件的 Parent 属性设置为 Toolbar 对象。
HandleVisibility 属性设置为 'off' 的对象不会列在 Children 属性中。
对象句柄的可见性,指定为 'on'、'callback' 或 'off'。
此属性控制对象在其父级的子级列表中的可见性。当对象未显示在其父级的子级列表中时,通过搜索对象层次结构或查询属性来获取对象的函数不会返回该对象。这些函数包括 get、findobj、gca、gcf、gco、newplot、cla、clf 和 close。HandleVisibility 属性还控制对象句柄是否显示在父图窗的 CurrentObject 属性中。对象即使在不可见时也有效。如果可以访问某个对象,则可以设置和获取其属性,并将其传递给针对对象进行运算的任意函数。
| HandleVisibility 值 | 描述 |
|---|---|
'on' | 对象句柄始终可见。 |
'callback' | 对象句柄在回调或回调所调用的函数中可见,但在从命令行调用的函数中不可见。此选项阻止通过命令行访问对象,但允许回调函数访问对象。 |
'off' | 对象句柄始终不可见。该选项用于防止另一函数无意中对 UI 进行更改。将 HandleVisibility 设置为 'off' 可在执行该函数时暂时隐藏句柄。 |
示例
更改工具栏中从左到右的工具顺序。在本例中,颠倒 UI 图窗工具栏中按钮工具和切换工具的顺序。
创建一个 UI 图窗。向其中添加一个工具栏。然后,在工具栏中添加按钮工具和切换工具。
fig = uifigure; tb = uitoolbar(fig); pt = uipushtool(tb); tt = uitoggletool(tb);

在工具栏中创建一个按钮工具。将 Icon 属性值设置为图像文件 matlabicon.gif。
pt.Icon = fullfile(matlabroot,'toolbox','matlab','icons','matlabicon.gif');

创建一个蓝色真彩色图像数组。将 Icon 属性值设置为此数组,以在切换工具中显示蓝色方形图标。
ttImage = zeros(16,16,3); ttImage(:,:,3) = ones(16); tt.Icon = ttImage;

查询工具栏的 Children 属性。在此数组中返回的子级的顺序反映了工具在工具栏中从右到左的显示顺序。切换工具是最右边的工具,出现在列表的顶部(数组的第一个元素)。
oldToolOrder = tb.Children
oldToolOrder = 2×1 graphics array: ToggleTool PushTool
通过调用 flipud 函数翻转在 tb.Children 返回的数组中元素的顺序,以颠倒工具的顺序。将 Children 属性值设置为此新工具顺序。按钮工具现在出现在工具栏中切换工具的右侧。
newToolOrder = flipud(oldToolOrder); tb.Children = newToolOrder;

版本历史记录
在 R2006a 之前推出通过设置 BackgroundColor 属性,在使用 figure 函数创建的 App 中指定工具栏的背景颜色。
通过设置 BackgroundColor 属性,在使用 uifigure 函数创建的 App 中指定工具栏的背景颜色。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)









