PushTool
按钮工具 UI 组件

说明
按钮工具 UI 组件是工具栏中的按钮,当 App 用户按下该按钮时会响应。在创建按钮工具后,使用 PushTool 对象修改其外观和行为。
创建对象
使用 uipushtool 函数在图窗中创建一个按钮工具。
属性
按钮工具
图标源或文件,指定为字符向量、字符串标量或 m×n×3 真彩色图像数组。如果指定字符向量或字符串标量,它可以是 MATLAB® 路径中的图像文件名或图像文件的完整路径。如果您计划与他人共享您的 App,请将图像文件放在 MATLAB 路径中以便于打包 App。支持的图像格式包括 JPEG、PNG、GIF 和 SVG。
如果指定 m×n×3 数组,它将解释为真彩色图像数组。有关真彩色图像数组的详细信息,请参阅在 MATLAB 中使用图像类型。
如果您指定的图像大于 16×16 像素,则 Icon 属性会缩小图像,使整个图像适应该工具。如果您指定的图像小于 16×16 像素,则不会放大图像来适应可用空间。
如果同时设置了 Icon 和 CData 属性,则忽略 CData 属性。
示例: 'icon.png' 指定 MATLAB 路径中的一个图像文件。
示例: 'C:\Documents\icon.png' 指定图像文件的完整路径。
分隔线模式,指定为 'off' 或 'on',或者指定为数值或逻辑值 0 (false) 或 1 (true)。值 'on' 等效于 true,'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。
将此属性设置为 'on' 将在工具栏上的工具左侧绘制一条分隔线。
注意
对于指定按钮工具和切换工具图标,推荐使用 Icon 属性(而不是 CData 属性),因为它支持更多图像格式。
图像数组,指定为 m×n×3 真彩色图像数组。数组中的值可以是:
介于
0.0和1.0之间的双精度值介于
0和255之间的uint8值
为防止图像出现裁剪或畸变,请指定 m 和 n 小于或等于 16 的数组。如果图像被裁剪,则仅使用数组的中心 16×16 部分。
交互性
可见性状态,指定为 'on' 或 'off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true,'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。
'on'- 显示对象。'off'- 隐藏对象而不删除它。您仍然可以访问不可见 UI 组件的属性。
要使您的 App 更快地启动,请将不需要在启动时出现的所有 UI 组件的 Visible 属性设置为 'off'。
工作状态,指定为 'on' 或 'off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true,'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。
如果您将此属性设置为
'on',则 App 用户可以与组件进行交互。如果您将此属性设置为
'off',组件将灰显,指示 App 用户无法与其交互,并且它不会触发回调。
工具提示,指定为字符向量、字符串标量或分类数组。使用此属性可在鼠标指针悬停在运行的 App 中的组件上时显示一条消息。当该组件被禁用时,工具提示不会出现。如果将此属性指定为分类数组,MATLAB 将使用数组中的值,而不是完整的类别集。
要创建多行工具提示,请使用 sprintf 函数在文本中插入换行符 ('\n')。例如:
txt = sprintf('Line 1\nLine 2');然后将 Tooltip 属性设置为 sprintf 返回的值。
设置此属性对此类型的对象没有影响。
工具提示,指定为字符向量、字符串标量或分类数组。当您将鼠标悬停在 App 中的组件上时,会出现工具提示。如果将此属性指定为分类数组,MATLAB 将使用数组中的值,而不是完整的类别集。
注意
从 R2018b 开始,不推荐使用 TooltipString 属性。请改用 Tooltip 属性。
回调
工具被点击后的回调,指定为下列值之一:
函数句柄。
第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参量。
包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。
有关将回调函数指定为函数句柄、元胞数组或字符向量的详细信息,请参阅Specify a Callback Function。
组件创建函数,指定为下列值之一:
函数句柄。
第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参量。
包含有效 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 属性的值,以确认它不是待删除项。
此属性对此类型的对象没有影响。
父级/子级
父对象,指定为 Toolbar 对象。使用此属性可在创建工具时指定父工具栏,或将现有工具移动到其他工具栏上。
对象句柄的可见性,指定为 'on'、'callback' 或 'off'。
此属性控制对象在其父级的子级列表中的可见性。当对象未显示在其父级的子级列表中时,通过搜索对象层次结构或查询属性来获取对象的函数不会返回该对象。这些函数包括 get、findobj、gca、gcf、gco、newplot、cla、clf 和 close。HandleVisibility 属性还控制对象句柄是否显示在父图窗的 CurrentObject 属性中。对象即使在不可见时也有效。如果可以访问某个对象,则可以设置和获取其属性,并将其传递给针对对象进行运算的任意函数。
| HandleVisibility 值 | 描述 |
|---|---|
'on' | 对象句柄始终可见。 |
'callback' | 对象句柄在回调或回调所调用的函数中可见,但在从命令行调用的函数中不可见。此选项阻止通过命令行访问对象,但允许回调函数访问对象。 |
'off' | 对象句柄始终不可见。该选项用于防止另一函数无意中对 UI 进行更改。将 HandleVisibility 设置为 'off' 可在执行该函数时暂时隐藏句柄。 |
示例
通过调用 uifigure 函数创建一个 UI 图窗。在 UI 图窗中创建一个工具栏。
fig = uifigure; tb = uitoolbar(fig);

向该工具栏添加一个按钮工具。按钮工具显示默认图标。
pt = uipushtool(tb);

通过将 Icon 属性值设置为图像文件 greencircleicon.gif,为按钮工具添加一个图标。
pt.Icon = fullfile(matlabroot,'toolbox','matlab','icons','greencircleicon.gif');

创建一个按钮工具,当您点击它时,它将打开 uisetcolor 对话框。将 UI 图窗的背景颜色更改为从颜色选择器中选择的颜色。
首先,创建一个名为 colorPickerPushTool.m 的程序文件。在该程序文件中:
创建一个 UI 图窗。
在 UI 图窗中创建一个工具栏。
在工具栏中创建一个按钮工具。
通过将
Icon属性值设置为paintbrush.gif的完整文件路径,为按钮工具添加一个适当的图标。为按钮工具创建一个工具提示。
将
ClickedCallback属性设置为引用名为colorToolClicked的回调函数的函数句柄。创建一个名为
colorToolClicked的回调函数。在其中调用uisetcolor函数,这样当您点击工具栏中的按钮工具时,会打开颜色选择器对话框。将颜色选择器的默认颜色设置为 UI 图窗的颜色,并将颜色选择器的标题指定为'Select UI Figure Color'。使 UI 图窗成为当前图窗,以便它显示在所有其他图窗的前端。
function colorPickerPushTool fig = uifigure('Position',[350 500 400 300]); tb = uitoolbar(fig); pt = uipushtool(tb); pt.Icon = fullfile(matlabroot,'toolbox','matlab','icons','paintbrush.gif'); pt.Tooltip = 'Change UI Figure Color'; pt.ClickedCallback = @colorToolClicked; function colorToolClicked(src,event) c = uisetcolor(fig,'Select UI Figure Color'); figure(fig) end end
运行 colorPickerPushTool。点击按钮工具打开颜色选择器。然后,选择一种颜色来更改 UI 图窗的背景颜色。
colorPickerPushTool

版本历史记录
在 R2006a 之前推出在使用 figure 函数创建的 App 中,要将自定义图标添加到按钮工具,请设置 Icon 属性。您可以将 Icon 属性指定为图像文件或 m×n×3 真彩色数组。
推荐使用 Icon 属性,而不是 CData 属性。
在 App 设计工具中创建的 App 和基于 uifigure 的 App 中,要将自定义图标添加到按钮工具,请设置 Icon 属性。您可以将 Icon 属性指定为图像文件或 m×n×3 真彩色数组。
推荐使用 Icon 属性,而不是 CData 属性。
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)