35.1 I/O对话框

简单的对话框菜单可用于选择目录或文件。它们会返回一个字符串变量,然后可以与任何需要文件名的命令一起使用。

 
dirname = uigetdir ()
dirname = uigetdir (init_path)
dirname = uigetdir (init_path, dialog_name)

打开GUI对话框以选择目录。

如果未给定init_path,则使用当前工作目录。

dialog_name可用于自定义对话框标题。

输出参数dirname是一个字符字符串,包含所选目录的名称。但是,如果点击了‘Cancel’按钮,则输出为类型 double 的值0

另请参阅:uigetfileuiputfile

 
[fname, fpath, fltidx] = uigetfile ()
[…] = uigetfile (flt)
[…] = uigetfile (flt, dialog_name)
[…] = uigetfile (flt, dialog_name, default_file)
[…] = uigetfile (…, "MultiSelect", mode)

打开GUI对话框以选择文件,并返回文件名fname、该文件的路径fpath以及筛选器索引fltidx

flt包含以下格式之一的文件筛选器字符串(列表):

"/path/to/filename.ext"

如果给定了文件名,则提取文件扩展名并将其用作筛选器。此外,该路径被选为对话框中的当前路径,文件名被选为默认文件。示例:uigetfile ("myfcn.m")

单个文件扩展名 "*.ext"

示例:uigetfile ("*.ext")

两列元胞数组

第一列包含文件扩展名,第二列包含简要描述。示例: uigetfile ({"*.ext", "My Description";"*.xyz", "XYZ-Format"})

筛选器字符串还可以包含以分号分隔的筛选器扩展名列表。示例: uigetfile ({"*.gif;*.png;*.jpg", "Supported Picture Formats"})

目录名或路径名

如果路径名的文件夹名包含尾部文件分隔符,则会显示该文件夹的内容。如果不存在尾部文件分隔符,则会列出父目录。最右侧文件分隔符(如果有)右边的子字符串将被解释为文件或目录名,如果该文件或目录存在,则会被高亮显示。如果路径名或目录名完全或部分不存在,则会显示当前工作目录。不会激活任何筛选器。

dialog_name可用于自定义对话框标题。

如果给定了default_file,则它将在GUI对话框中被预先选中。此外,如果给定了一个路径,它也将用作当前路径。

当将"MultiSelect"键设置为"on"时,可以选择两个或多个文件。在这种情况下,fname是一个包含这些文件的元胞数组。

输出参数fnamefpath是分别返回所选名称和路径的字符串。但是,如果点击了‘Cancel’按钮,则输出为类型 double,值为0fltidx是所选的筛选器扩展名列表flt中的索引。

另请参阅:uiputfileuigetdir

 
[fname, fpath, fltidx] = uiputfile ()
[fname, fpath, fltidx] = uiputfile (flt)
[fname, fpath, fltidx] = uiputfile (flt, dialog_name)
[fname, fpath, fltidx] = uiputfile (flt, dialog_name, default_file)

打开GUI对话框以选择文件。

flt包含以下格式之一的文件筛选器字符串(列表):

"/path/to/filename.ext"

如果给定文件名,则提取文件扩展名并将其用作筛选器。此外,该路径在对话框中被选为当前路径,文件名被选为默认文件。示例:uiputfile ("myfcn.m")

"*.ext"

单个文件扩展名。示例:uiputfile ("*.ext")

{"*.ext", "My Description"}

一个两列元胞数组,第一列包含文件扩展名,第二列包含简要说明。示例:uiputfile ({"*.ext","My Description";"*.xyz", "XYZ-Format"})

筛选器字符串还可以包含以分号分隔的筛选器扩展名列表。示例:uiputfile ({"*.gif;*.png;*.jpg", "Supported Picture Formats"})

dialog_name可用于自定义对话框标题。如果给定了default_file,则它将在GUI对话框中被预先选中。此外,如果给定了一个路径,它也将用作当前路径。

fnamefpath分别返回所选的名称和路径。fltidx是所选的筛选器扩展名列表flt中的索引。

另请参阅:uigetfileuigetdir

此外,还有一些用于显示帮助消息、警告或错误以及从用户处获取文本输入的对话框。

 
errordlg ()
errordlg (msg)
errordlg (msg, title)
errordlg (msg, title, opt)
h = errordlg (…)

显示一个错误对话框,包含错误消息msg和标题title

默认错误消息为"This is the default error string.",默认标题为"Error Dialog"

错误消息可以有多行,用换行符("\ ")分隔,也可以是一个每行一个元素的 cellstr 数组。

第三个可选参数opt控制对话框的行为。有关详细信息,请参阅msgbox

返回值h是用于构建对话框的图形对象的句柄。

示例:

errordlg ("Some fancy error occurred.");
errordlg ("Some fancy error\
with two lines.");
errordlg ({"Some fancy error", "with two lines."});
errordlg ("Some fancy error occurred.", "Fancy caption");

另请参阅:helpdlgwarndlgmsgboxinputdlglistdlgquestdlg

 
helpdlg ()
helpdlg (msg)
helpdlg (msg, title)
h = helpdlg (…)

显示一个帮助对话框,包含帮助消息msg和标题title

默认帮助消息为"This is the default help string.",默认标题为"Help Dialog"

帮助消息可以有多行,用换行符("\ ")分隔,也可以是一个每行一个元素的 cellstr 数组。

返回值h是用于构建对话框的图形对象的句柄。

示例:

helpdlg ("Some helpful text for the user.");
helpdlg ("Some helpful text\
with two lines.");
helpdlg ({"Some helpful text", "with two lines."});
helpdlg ("Some helpful text for the user.", "Fancy caption");

另请参阅:errordlgwarndlgmsgboxinputdlglistdlgquestdlg

 
cstr = inputdlg (prompt)
cstr = inputdlg (prompt, title)
cstr = inputdlg (prompt, title, rowscols)
cstr = inputdlg (prompt, title, rowscols, defaults)
cstr = inputdlg (prompt, title, rowscols, defaults, options)

从多文本框输入对话框中返回用户输入。

输入参数:

prompt

一个字符串元胞数组,用于标注每个文本框。此参数是必需的。

title

用于对话框标题的字符串。默认为"Input Dialog"

rowscols

指定文本框的大小,可以采用四种形式:

  1. 一个标量值,定义每个文本框使用的行数。
  2. 一个行向量或列向量,元素数量与提示数量匹配。每个元素定义了相应文本框使用的行数。
  3. 一个 1x2 行向量,定义所有文本框使用的行数和列数。
  4. 一个 Mx2 矩阵,定义每个文本框单独使用的行数和列数。在该矩阵中,每一行描述一个文本框。第一列指定要使用的输入行数,第二列指定文本框宽度。
defaults

要放置在每个文本框中的默认值列表。它必须是一个字符串元胞数组,大小与prompt相同。

options

不支持,仅用于MATLAB兼容性。

输出参数: 输出是一个字符串元胞数组,每个元素是用户输入的文本。如果对话框通过“取消”按钮关闭,则返回一个空元胞数组。

示例:

prompt = {"Width", "Height", "Depth"};
defaults = {"1.10", "2.20", "3.30"};
rowscols = [1,10; 2,20; 3,30];
dims = inputdlg (prompt, "Enter Box Dimensions", ...
                 rowscols, defaults);

另请参阅:errordlghelpdlglistdlgmsgboxquestdlgwarndlg

 
[sel, ok] = listdlg (key, value, …)

返回列表对话框中的用户输入,以所选索引的向量(sel)以及指示用户如何关闭对话框的标志(ok)的形式。

sel中的索引基于1。

如果用户通过“确定”按钮关闭对话框,ok的值为1,否则为0(此时sel为空)。

输入参数以keyvalue对的形式指定。其中"ListString"参数对必须指定。

有效的keyvalue对有:

"ListString"

一个字符串元胞数组,指定要在对话框中列出的项目。

"SelectionMode"

可以是"Single"(一次只能选择一个项目)或"Multiple"(默认)。

"ListSize"

一个二元向量[width, height],以像素为单位指定列表字段的大小。默认值为 [160, 300]。

"InitialValue"

一个包含基于1的索引的向量,指定列表对话框首次显示时预先选中的元素。默认值为 1(第一项)。

"Name"

用作对话框标题的字符串。默认值为 ""。

"PromptString"

要显示在项目列表上方的字符串元胞数组。默认值为 {}。

"OKString"

用于标注“确定”按钮的字符串。默认为"OK"

"CancelString"

用于标注“取消”按钮的字符串。默认为"Cancel"

示例:

my_options = {"An item", "another", "yet another"};
[sel, ok] = listdlg ("ListString", my_options,
                     "SelectionMode", "Multiple");
if (ok == 1)
  disp ("You selected:");
  for i = 1:numel (sel)
    disp (sprintf ("\	%s", my_options{sel(i)}));
  endfor
else
  disp ("You cancelled.");
endif

另请参阅:menuerrordlghelpdlginputdlgmsgboxquestdlgwarndlg

 
h = msgbox (msg)
h = msgbox (msg, title)
h = msgbox (msg, title, icon)
h = msgbox (msg, title, "custom", cdata)
h = msgbox (msg, title, "custom", cdata, colormap)
h = msgbox (…, opt)

使用消息对话框显示msg

消息可以有多行,用换行符("\ ")分隔,也可以是一个每行一个元素的 cellstr 数组。

可选输入title(字符串)可用于装饰对话框标题。

可选参数icon选择对话框图标。它可以是"none"(默认)、"error""help""warn""custom"之一。后者后面必须跟一个图像数组cdata,对于索引图像,还要跟相关的颜色映射表。

最后一个可选参数opt控制对话框的行为。如果opt是字符串,则可以是以下之一:

"non-modal"(默认)

对话框正常显示。

"modal"

如果已经存在具有相同标题的任何对话框,则重复使用最近的那个,并关闭所有其他对话框。对话框以"modal"模式显示,这意味着它会阻止用户与任何其他GUI元素交互,直到该对话框关闭。

"replace"

如果已经存在具有相同标题的任何对话框,则重复使用最近的那个,并关闭所有其他对话框。生成的对话框设置为"non-modal"

如果opt是一个结构体,它必须包含字段"WindowStyle""Interpreter"

"WindowStyle"

值必须为"non-modal""modal""replace"。见上文。

"Interpreter"

控制用于显示消息的文本对象的"interpreter"属性。值必须为"tex"(默认)、"none""latex"

返回值h是用于构建对话框的图形对象的句柄。

示例:

msgbox ("Some message for the user.");
msgbox ("Some message\
with two lines.");
msgbox ({"Some message", "with two lines."});
msgbox ("Some message for the user.", "Fancy caption");

## A message dialog box with error icon
msgbox ("Some message for the user.", "Fancy caption", "error");

另请参阅:errordlghelpdlginputdlglistdlgquestdlgwarndlg

 
btn = questdlg (msg)
btn = questdlg (msg, title)
btn = questdlg (msg, title, default)
btn = questdlg (msg, title, btn1, btn2, default)
btn = questdlg (msg, title, btn1, btn2, btn3, default)

使用问题对话框显示msg,并返回被点击按钮的标题。

消息可以有多行,用换行符("\ ")分隔,也可以是一个每行一个元素的 cellstr 数组。

可选的title(字符串)可用于指定对话框标题。默认为"Question Dialog"

对话框可能包含两个或三个按钮,这些按钮都会关闭对话框。

字符串default标识默认按钮,该按钮在按下RETURN键时将被激活。如果未指定default,则使用第一个按钮。

示例:

btn = questdlg ("Close Octave?", "Really?", "Yes", "No", "Yes");
if (strcmp (btn, "Yes"))
  exit ();
endif

另请参阅:errordlghelpdlginputdlglistdlgmsgboxwarndlg

 
c = uisetcolor ()
c = uisetcolor (rgb)
c = uisetcolor (rgb, title)

打开一个颜色选择对话框。

RGB 颜色rgb指定初始选定的颜色。如果未指定rgb,则初始颜色设置为黑色(0,0,0)。

title是对话框窗口的标题字符串(可选)。

输出c是包含所选颜色的 RGB 三元组。

示例:

c = uisetcolor ([0.5 0.5 0.5], "Select a color");

另请参阅:msgboxerrordlghelpdlgwarndlg

 
warndlg ()
warndlg (msg)
warndlg (msg, title)
warndlg (msg, title, opt)
h = warndlg (…)

显示一个警告对话框,包含警告消息msg和标题title

默认警告消息为"This is the default warning string.",默认标题为"Warning Dialog"

警告消息可以有多行,用换行符("\ ")分隔,也可以是一个每行一个元素的 cellstr 数组。

第三个可选参数opt控制对话框的行为。有关详细信息,请参阅msgbox

返回值h是用于构建对话框的图形对象的句柄。

示例:

warndlg ("Some warning text for the user.");
warndlg ("Some warning text\
with two lines.");
warndlg ({"Some warning text", "with two lines."});
warndlg ("Some warning text for the user.", "Fancy caption");

另请参阅:errordlghelpdlgmsgboxinputdlglistdlgquestdlg

 
uisetfont ()
uisetfont (h)
uisetfont (fontstruct)
uisetfont (…, title)
fontstruct = uisetfont (…)

打开字体选择对话框。

如果第一个参数是文本、坐标轴或 uicontrol 对象的句柄,点击“确定”按钮将更改该对象的字体属性。

第一个参数也可以是一个结构体,包含字段FontNameFontWeightFontAngleFontUnitsFontSize,用于指示初始选定的字体。

对话框窗口的标题可以使用最后一个参数title指定。

如果请求了输出参数fontstruct,则返回选定的字体结构体。否则,字体信息将显示在屏幕上。

编程说明:在非原生使用 FontConfig 的系统上(除 Linux 外的所有系统),字体缓存在 Octave 安装时构建。安装新字体后,您需要手动运行 system ("fc-cache -fv")

另请参阅:listfontstextaxesuicontrol

对于创建新的对话框类型,有一个 dialog 函数。

 
h = dialog ()
h = dialog ("property", value, …)

创建一个空的模态对话框窗口,可以向其中添加其他 uicontrol 控件。

该对话框是一个图形对象,其属性设置为适合对话框的推荐值。

与普通图形对象不同的默认属性如下:

buttondownfcn

if isempty (allchild(gcbf)), close (gcbf), endif

colormap

[]

color

defaultuicontrolbackgroundcolor

dockcontrols

关闭

handlevisibility

callback

integerhandle

关闭

inverthardcopy

关闭

menubar

numbertitle

关闭

paperpositionmode

auto

resize

关闭

windowstyle

modal

可以为对话框对象指定多个属性-值对,但它们必须成对出现。完整的属性列表请参阅 Figure Properties

返回值h是所创建的图形对象的图形句柄。

示例:

## create an empty dialog window titled "My Dialog"
## containing a uicontrol with specified properties
h = dialog ("name", "My Dialog",
            "position", [200 200 300 200]);
uicontrol ("parent", h, "style", "text",
           "string", "Hello, World!",
           "position", [80 80 150 40]);

另请参阅:uicontrolfiguremsgboxerrordlghelpdlgwarndlg