Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

dialog

创建空的模态对话框

说明

d = dialog 创建一个空对话框并返回 Figure 对象 d。使用 uicontrol 函数将用户界面控件添加到对话框中。

示例

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 在简单的模态对话框中工作良好,但不建议您用在较复杂的应用程序中。

输入参数

全部折叠

名称-值对组参数

示例: 'WindowStyle','normal'WindowStyle 属性设置为 'normal'

此处所列的属性只是一部分。有关完整列表,请参阅 Figure 属性

可绘制区域的位置和大小,指定为 [left bottom width height] 形式的向量。此区域不包括图窗边框、标题栏、菜单栏和工具栏。

此表介绍 Position 向量中的每个元素。

元素说明
left从主画面左边缘到窗口的内部左边缘的距离。在具有多个监视器的系统上,此值可能为负数。

如果图窗已停靠,则此值相对于 MATLAB 桌面中的“图窗”面板。
bottom从主画面下边缘到窗口的内部下边缘的距离。在具有多个监视器的系统上,此值可能为负数。

如果图窗已停靠,则此值相对于 MATLAB 桌面中的“图窗”面板。
widthdialog 的左右内部边缘之间的距离。
height窗口的上下内部边缘之间的距离。

所有测量值都采用 Units 属性指定的单位。

图窗停靠时不能指定图窗的 Position 属性。

MATLAB Online™ 中,Position 向量的 bottomleft 元素被忽略。

要放置包括边框、标题栏、菜单栏和工具栏在内的整个窗口,请使用 OuterPosition 属性。

注意

Windows® 操作系统会强制应用最小窗口宽度和最大窗口大小。如果您指定的图窗尺寸超出这些限制,将按照这些限制而不是指定的尺寸显示图窗。

按钮按下回调,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

只要用户点击图窗中的空白区域,就会执行此回调。

有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅如何指定回调属性值

使用 SelectionType 属性确定用户是否按下了修改键。

窗口样式,指定为下列值之一:

  • 'normal' - 此图窗窗口独立于其他窗口,并且在显示图窗时可以访问其他窗口。

  • 'modal' - 该图窗显示在所有现有图窗窗口的上方,并使这些窗口变得无法访问(只要顶层图窗存在并保持模态)。但是,任何在模态图窗之后创建的新图窗都会显示出来。

    存在多个模态窗口时,最新创建的窗口将会保持焦点并位于所有其他窗口之上,直到变得不可见、恢复为正常窗口样式或被删除。此时,焦点会重新回到上次具有焦点的窗口。

  • 'docked' - 图窗显示在桌面或文档窗口中。如果 WindowStyle 属性设置为 'docked',则无法将 DockControls 属性设置为 'off'MATLAB Online 中不支持 'docked' 选项。

注意

以下是 WindowStyle 属性的一些重要特性和一些推荐的最佳做法:

  • 创建 UI 窗口时,应始终指定 WindowStyle 属性。如果还想要设置图窗的 ResizePositionOuterPosition 属性,先要设置 WindowStyle 属性。

  • 您可以随时更改图窗的 WindowStyle 属性,包括图窗可见并包含子图窗的情况。但是,在某些系统上,设置该属性可能会导致图窗闪烁或者消失后重新显示,具体取决于系统的正常窗口和模态窗口的实现。为实现最佳视觉效果,应在创建时或图窗不可见时设置 WindowStyle 属性。

  • 对图窗调用 reset 并不会改变 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'
Colormap[]
DockControls'off'
HandleVisibility'callback'
IntegerHandle'off'
InvertHardcopy'off'
MenuBar'none'
Number[]
NumberTitle'off'
PaperPositionMode'auto'
Resize'off'
WindowStyle'modal'

另请参阅

函数

属性

在 R2006a 之前推出