uifigure
创建用于设计 App 的图窗
说明
创建一个用于构建用户界面的图窗并返回 fig
= uifigureFigure
对象。这是 App 设计工具使用的图窗类型。
使用一个或多个名称-值参量指定图窗属性。fig
= uifigure(Name,Value
)
示例
创建 UI 图窗
创建一个用于构建 App 的空白图窗。
fig = uifigure;
设置和访问图窗属性
创建具有特定标题和图标的 UI 图窗。
fig = uifigure("Name","Plotted Results", ... "Icon","peppers.png");
查询图窗背景颜色。
c = fig.Color
c = 1×3
0.9400 0.9400 0.9400
更改图窗大小
创建默认 UI 图窗。
fig = uifigure;
获取该图窗的位置、宽度和高度。
fig.Position
ans = 681 559 560 420
这意味着图窗窗口位于主显示画面左下角的右侧 681 像素和上方 559 像素处,宽 560 像素,高 420 像素。
通过调整位置向量的第三个和第四个元素,将图窗宽度和高度减半。
fig.Position(3:4) = [280 210];
创建模态 UI 图窗
创建两个 UI 图窗窗口。通过将图窗 2 的 WindowStyle
属性值指定为 'modal'
来阻止图窗 1 中的交互。请注意,在图窗 2 关闭之前,您无法与图窗 1 交互。
fig1 = uifigure('Name','Figure 1'); fig1.Position = [500 500 370 270]; fig2 = uifigure('Name','Figure 2'); fig2.Position = [540 450 370 270]; fig2.WindowStyle = 'modal';
编写 CloseRequestFcn 以确认关闭 UI 图窗
编写 CloseRequestFcn
回调,以便在用户试图关闭窗口时打开模态“确认”对话框。
请将以下代码复制并粘贴到 MATLAB® 编辑器中,然后运行 closeFig
。
function closeFig fig = uifigure('Position',[100 100 425 275]); fig.CloseRequestFcn = @(src,event)my_closereq(src); function my_closereq(fig) selection = uiconfirm(fig,'Close the figure window?',... 'Confirmation'); switch selection case 'OK' delete(fig) case 'Cancel' return end end end
点击图窗中的关闭按钮。“确认”对话框随即打开。
更改鼠标指针符号
更改将鼠标悬停在普通按钮上时显示的鼠标指针符号。
此程序文件名为 setMousePointer.m
,它向您说明如何:
创建一个 UI 图窗,该图窗在鼠标移至按钮上时执行自定义代码。为此,使用
@
运算符将mouseMoved
函数句柄赋给该图窗的WindowButtonMotionFcn
属性。创建一个普通按钮,并指定其坐标和标签。
创建一个名为
mouseMoved
的回调函数,其中包含当鼠标移到该按钮上时要执行的自定义代码。在函数中,查询CurrentPoint
属性以确定鼠标指针坐标。如果指针坐标在普通按钮坐标内,则将Pointer
属性设置为'hand'
。
运行 setMousePointer
。然后将鼠标移到该普通按钮上,以查看鼠标指针符号从箭头变为手形。
function setMousePointer fig = uifigure('Position',[500 500 375 275]); fig.WindowButtonMotionFcn = @mouseMoved; btn = uibutton(fig); btnX = 50; btnY = 50; btnWidth = 100; btnHeight = 22; btn.Position = [btnX btnY btnWidth btnHeight]; btn.Text = 'Submit Changes'; function mouseMoved(src,event) mousePos = fig.CurrentPoint; if (mousePos(1) >= btnX) && (mousePos(1) <= btnX + btnWidth) ... && (mousePos(2) >= btnY) && (mousePos(2) <= btnY + btnHeight) fig.Pointer = 'hand'; else fig.Pointer = 'arrow'; end end end
输入参数
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
示例: uifigure(Name="My App")
将 My App
指定为 UI 图窗的标题。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: uifigure("Name","My App")
将 My App
指定为 UI 图窗的标题。
注意
此处所列的属性只是可用属性中的一部分。有关完整列表,请参阅 UI Figure 属性。
WindowStyle
— 窗口样式
'normal'
(默认) | 'modal'
| 'alwaysontop'
窗口样式,指定为下列值之一:
'normal'
- 此图窗窗口独立于其他窗口,并且在显示图窗时可以访问其他窗口。'modal'
- 该图窗以正常窗口样式显示在所有现有图窗窗口的上方,并使这些窗口变得无法访问(只要顶层图窗存在并保持模态)。但是,任何在模态图窗之后创建的新图窗都会显示出来。存在多个模态窗口时,最新创建的窗口将会保持焦点并位于所有其他窗口之上,直到变得不可见、恢复为正常窗口样式或被删除。此时,焦点会重新回到上次具有焦点的窗口。
'alwaysontop'
- 图窗显示在所有其他窗口的顶部,包括模态图窗窗口和来自非 MATLAB 应用程序的窗口。其他窗口仍可访问。
注意
以下是 WindowStyle
属性的一些重要特性和一些推荐的最佳做法:
创建 UI 窗口时,应始终指定
WindowStyle
属性。如果还想要设置图窗的Resize
或Position
属性,先要设置WindowStyle
属性。您可以随时更改图窗的
WindowStyle
属性,包括图窗可见并包含子图窗的情况。但是,在某些系统上,设置该属性可能会导致图窗闪烁或者消失后重新显示,具体取决于系统的正常窗口和模态窗口的实现。为实现最佳视觉效果,应在创建时或图窗不可见时设置WindowStyle
属性。
UI 图窗模态窗口样式行为
当 WindowStyle
设置为 'modal'
时,UI 图窗窗口会阻止在它之前创建的 UI 图窗窗口中的键盘和鼠标交互,并将其 Visible
属性设置为 'on'
。例如,在此示例中,图窗 3 相对于图窗 2 为模态图窗,图窗 2 相对于图窗 1 为模态图窗。
fig1 = uifigure('Name','Figure 1'); fig1.WindowStyle = 'modal'; fig2 = uifigure('Name','Figure 2'); fig2.WindowStyle = 'modal'; fig3 = uifigure('Name','Figure 3'); fig3.WindowStyle = 'modal';
与使用 figure
函数创建的模态图窗不同,使用 uifigure
函数创建的模态图窗不会阻止用户访问用 figure 函数或 MATLAB 桌面创建的图窗。也不会阻止与 MATLAB 以外的应用程序窗口的交互。
模态图窗获得焦点时键入 Ctrl+C 会导致图窗恢复到 'normal'
WindowStyle
属性设置。这样用户可以在命令行键入内容。
WindowStyle
属性设置为 'modal'
并且 Visible
属性设置为 'off'
的 UI 图窗在 MATLAB 使它们变得可见之前不会以模态方式运行。因此,您可以隐藏模态窗口供以后重用,而不用销毁它。
模态图窗不显示菜单子级、内置菜单或工具栏。但是,在模态图窗中创建菜单或在具有菜单子级的图窗上将 WindowStyle
属性设置更改为 'modal'
并不是错误。Menu
对象会存在,而且图窗会保留它们。如果您将 UI 图窗的 WindowStyle
属性重置为 'normal'
,则会显示菜单。
Name
— 名称
''
(默认) | 字符向量 | 字符串标量
图窗的名称,指定为字符向量或字符串标量。
示例: uifigure('Name','Results')
将图窗的名称设置为 'Results'
。
在 App 设计工具中,Name
属性的默认值为 'MATLAB App'
。
Position
— UI 图窗的位置和大小,不包括边框和标题栏
[left bottom width height]
UI 图窗的位置和大小,不包括边框和标题栏,指定为 [left bottom width height]
形式的四元素向量。
此表介绍该向量中的每个元素。
元素 | 描述 |
---|---|
left | 从主画面左边缘到 UI 图窗窗口的内部左边缘的距离。在具有多个监视器的系统上,该值可能为负数。 |
bottom | 从主画面下边缘到 UI 图窗窗口的内部下边缘的距离。在具有多个监视器的系统上,该值可能为负数。 |
width | UI 图窗的左右内部边缘之间的距离。 |
height | UI 图窗的上下内部边缘之间的距离。 |
局限性
现在,您无法再将使用
uifigure
函数创建的Figure
对象传递给print
函数。如果您试图这么做,MATLAB 将引发错误。有关详细信息,请参阅在 App 设计工具中显示图形。
提示
版本历史记录
在 R2016a 中推出R2021a: 创建保留在前景中的 UI 图窗
要使某个特定的 UI 图窗窗口保持在其他窗口的前面,请将 WindowStyle
属性设置为 'alwaysontop'
。与模态图窗不同,具有此属性设置的 UI 图窗窗口不限制键盘和鼠标交互。
R2020b: 创建模态 UI 图窗
要将键盘和鼠标交互限制到特定的 UI 图窗窗口,请将 WindowStyle
属性设置为 'modal'
。
R2020b: 指定自定义图标
要将自定义图标添加到 UI 图窗窗口,请将 Icon
属性设置为图像文件或 m
×n
×3 真彩色数组。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)