dialog
创建空的模态对话框
说明
指定一个或多个 d
= dialog(Name,Value
)Figure
属性名称及其对应值。使用该语法可覆盖默认属性。
示例
使用 uicontrol
函数将用户界面控件添加到对话框中。例如,创建一个名为 mydialog.m
的程序文件,用来显示包含文本和按钮的对话。
function mydialog d = dialog('Position',[300 300 250 150],'Name','My Dialog'); txt = uicontrol('Parent',d,... 'Style','text',... 'Position',[20 80 210 40],... 'String','Click the close button when you''re done.'); btn = uicontrol('Parent',d,... 'Position',[85 20 70 25],... 'String','Close',... 'Callback','delete(gcf)'); end
接下来,从命令行窗口运行 mydialog
函数。
mydialog
使用 uiwait
函数基于用户在对话框中选择的内容返回输出。例如,创建一个名为 choosedialog.m
的程序文件以便执行这些任务:
调用
dialog
函数可以创建具有特定大小和位置、标题为“Select One”的对话。调用
uicontrol
函数三次可以分别添加文本、弹出式菜单和按钮。定义函数
popup_callback
,将其用作该按钮的回调函数。调用
uiwait
函数可待至用户关闭对话之后再将输出返回到命令行。
function choice = choosedialog d = dialog('Position',[300 300 250 150],'Name','Select One'); txt = uicontrol('Parent',d,... 'Style','text',... 'Position',[20 80 210 40],... 'String','Select a color'); popup = uicontrol('Parent',d,... 'Style','popup',... 'Position',[75 70 100 25],... 'String',{'Red';'Green';'Blue'},... 'Callback',@popup_callback); btn = uicontrol('Parent',d,... 'Position',[89 20 70 25],... 'String','Close',... 'Callback','delete(gcf)'); choice = 'Red'; % Wait for d to close before running to completion uiwait(d); function popup_callback(popup,event) idx = popup.Value; popup_items = popup.String; choice = char(popup_items(idx,:)); end end
从命令行窗口运行 choosedialog
函数。然后,在对话框中选择一种颜色。
color = choosedialog
关闭该对话框时,choosedialog
返回最后选择的颜色。
color = Blue
注意
uiwait
函数阻止 MATLAB® 线程。虽然 uiwait
在简单的模态对话框中工作良好,但不建议您用在较复杂的应用程序中。
名称-值参数
示例: dialog('WindowStyle','normal')
将 WindowStyle
属性设置为 'normal'
。
此处所列的属性只是一部分。有关完整列表,请参阅 Figure
。
可绘制区域的位置和大小,指定为 [left bottom width height]
形式的向量。此区域不包括图窗边框、标题栏、菜单栏和工具栏。
此表介绍 Position
向量中的每个元素。
元素 | 描述 |
---|---|
left | 从主画面左边缘到窗口的内部左边缘的距离。在具有多个监视器的系统上,此值可能为负数。 如果图窗已停靠,则此值相对于 MATLAB 桌面中的“图窗”面板。 |
bottom | 从主画面下边缘到窗口的内部下边缘的距离。在具有多个监视器的系统上,此值可能为负数。 如果图窗已停靠,则此值相对于 MATLAB 桌面中的“图窗”面板。 |
width | dialog 的左右内部边缘之间的距离。 |
height | 窗口的上下内部边缘之间的距离。 |
所有测量值都采用 Units
属性指定的单位。
图窗停靠时不能指定图窗的 Position
属性。
在 MATLAB Online™ 中,Position
向量的 bottom
和 left
元素被忽略。
要放置包括边框、标题栏、菜单栏和工具栏在内的整个窗口,请使用 OuterPosition
属性。
注意
Windows® 操作系统会强制应用最小窗口宽度和最大窗口大小。如果您指定的图窗尺寸超出这些限制,将按照这些限制而不是指定的尺寸显示图窗。
按钮按下回调,指定为下列值之一:
函数句柄。
第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参量。
包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。
只要用户点击图窗中的空白区域,就会执行此回调。
有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅Specify a Callback Function。
使用 SelectionType
属性确定用户是否按下了修改键。
窗口样式,指定为下列值之一:
'modal'
- 该图窗显示在所有现有图窗窗口的上方,并使这些窗口变得无法访问(只要顶层图窗存在并保持模态)。但是,任何在模态图窗之后创建的新图窗都会显示出来。存在多个模态窗口时,最新创建的窗口将会保持焦点并位于所有其他窗口之上,直到变得不可见、恢复为正常窗口样式或被删除。此时,焦点会重新回到上次具有焦点的窗口。
'normal'
- 此图窗窗口独立于其他窗口,并且在显示图窗时可以访问其他窗口。'docked'
- 图窗显示在桌面或文档窗口中。如果WindowStyle
属性设置为'docked'
,则无法将DockControls
属性设置为'off'
。MATLAB Online 中不支持'docked'
选项。
注意
以下是 WindowStyle
属性的一些重要特性和一些推荐的最佳做法:
模态窗口样式行为
WindowStyle
设为 'modal'
时,图窗窗口将会捕获所有 MATLAB 窗口(只要可见)上的全部键盘和鼠标操作。属于应用程序而非 MATLAB 的窗口不受影响。
模态图窗获得焦点时键入 Ctrl+C 会导致图窗恢复到 'normal'
WindowStyle
属性设置。这样用户可以在命令行键入内容。
WindowStyle
属性设置为 'modal'
并且 Visible
属性设置为 'off'
的图窗在 MATLAB 使它们变得可见之前不会以模态方式运行。因此,您可以隐藏模态窗口供以后重用,而不用销毁它。
模态图窗不显示菜单子级、内置菜单或工具栏。但是,在模态图窗中创建菜单或在具有菜单子级的图窗上将 WindowStyle
属性设置更改为 'modal'
并不是错误。Menu
对象会存在,而且图窗会保留它们。如果您将图窗的 WindowStyle
属性重置为 'normal'
,则会显示菜单。
输出参量
对话窗口,以 Figure
对象形式返回,该对象设置了以下属性值。
属性 | 值 |
---|---|
ButtonDownFcn | 'if isempty(allchild(gcbf)), close(gcbf), end' |
DockControls | 'off' |
HandleVisibility | 'callback' |
IntegerHandle | 'off' |
InvertHardcopy | 'off' |
MenuBar | 'none' |
Number | [] |
NumberTitle | 'off' |
PaperPositionMode | 'auto' |
Resize | 'off' |
WindowStyle | 'modal' |
版本历史记录
在 R2006a 之前推出
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)