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)