Main Content

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

uigetpref

创建根据用户预设打开的对话框

说明

pval = uigetpref(group,pref,title,quest,pbtns) 创建一个具有指定组名称和预设名称的非模态对话框,用来收集用户的预设。组名称和预设名称结合起来可以唯一标识该对话框。对话框中包含以下内容:

  • 指定的问题 (quest) 以及供对话框用户回答该问题的一个或多个按钮 (pbtns)。所点击按钮的值返回为 pval

  • 一个复选框,默认情况下带有如下标签:不再显示此对话框

如果用户选中该复选框,MATLAB® 将存储并返回所点击按钮的值作为预设值 (pval)。以后再调用 uigetpref 操作同一个对话框时,系统会检测到已经存储了预设值,并应用该选择,而不再打开对话框。

如果用户没有选中该复选框,MATLAB 将返回所点击按钮的值,但不会存储该值。相反,MATLAB 会存储值 'ask'。这样以后再调用 uigetpref 时,MATLAB 还会打开指定的对话框。

示例

[pval,tf] = uigetpref(group,pref,title,quest,pbtns) 返回一个逻辑值,指示是否打开了对话框。如果打开了对话框,则 tf 的值为 1 (true)。否则,tf 的值为 0 (false)。

示例

[___] = uigetpref(___,Name,Value) 指定一个或多个可选的名称-值对组,您可以使用这些对组来执行以下任意操作。

  • 自定义复选框标签。

  • 指定打开对话框时是否选中复选框。

  • 提供帮助按钮以及帮助按钮的回调。

  • 指定未关联预设值的按钮。

  • 指定当用户在不点击预设项按钮的情况下关闭对话框时 uigetprefpval 返回的值。例如,如果用户点击对话框关闭按钮 (X)、按键盘上的 Esc 键或者点击未关联预设值的按钮,则会返回此值。

可以将此选项与上述语法中的任何输出参数结合使用。

示例

全部折叠

定义每个必需的 uigetpref 输入参数,然后将它们传递给 uigetpref

group = 'Updates';
pref =  'Conversion';
title = 'Converting';
quest = {'Are you sure you want to convert this code?',...
         'Conversions cannot be undone.'};
pbtns = {'Yes','No'};

[pval,tf] = uigetpref(group,pref,title,quest,pbtns)

点击 Yes。MATLAB 命令行窗口显示 pval 的值为 'yes'tf 的值为 1,指示显示了该对话框。

再次运行 uigetpref 命令,但这次选中不再显示此对话框,然后点击

[pval,tf] = uigetpref(group,pref,title,quest,pbtns)

MATLAB 命令行窗口显示 pval 的值为 'no'tf 的值为 1

再次运行 uigetpref 命令。

[pval,tf] = uigetpref(group,pref,title,quest,pbtns)

与预期一致,这次不再显示对话框。MATLAB 命令行窗口显示 pval 的值为 'no'tf 的值为 0

通过将预设值设置为 'ask',重新启用该对话框的显示。

setpref('Updates','Conversion','ask');

再次运行 uigetpref 命令。对话框再次打开。

[pval,tf] = uigetpref(group,pref,title,quest,pbtns)

以名称-值对组的形式指定 'ExtraOptions','Cancel',在对话框中添加一个 Cancel 按钮。如果用户点击 Cancel,MATLAB 会将按钮标签返回给 pval

group = 'Updates';
pref =  'Conversion';
title = 'Converting';
quest = {'Are you sure you want to convert this code?',...
         'Conversions cannot be undone.'};
pbtns = {'Yes','No'};
[pval] = uigetpref(group,pref,title,quest,pbtns,...
'ExtraOptions','Cancel');

创建一个函数,用它创建一个收集用户预设的对话框。在用户关闭图窗之前,该对话框会询问用户是否要保存图窗。根据用户点击的按钮的值,此函数将打开“保存”对话框,或者关闭图窗而不保存。

function savefigconditionally
fig = gcf;

group ='mygraphics';
pref = 'savefigbeforeclosing';
title = 'Closing Figure';
quest = {'Do you want to save your figure before closing?'
         ''
         'If you do not save the figure, all changes will be lost'};
pbtns = {'Yes','No'};
[pval,tf] = uigetpref(group,pref,title,quest,pbtns);

switch pval
    case 'yes'  
    [file,path,indx] = uiputfile('fig', ...
                                  'Save current figure', ...
                                  'untitled.fig');
       if indx == 0    
           delete(fig);
       else                   
           saveas(fig,[path,file])
           delete(fig);
       end
   case 'no'               
       delete(fig);
       return
 end

要运行此示例,请复制代码并将其粘贴到一个新的程序文件中。将该文件命名为 savefigconditionally.m 并将其保存到搜索路径中。要将该函数用作 CloseRequestFcn 回调,请创建一个图窗,并有选择地绘制一些数据。

figure('CloseRequestFcn','savefigconditionally');
x = [1 2 3 4 5];
y = [10 50 25 75 25];
plot(x,y);
每次运行上述命令块并点击图窗标题栏中的关闭按钮 (X) 时,该对话框都会打开,除非选中不再显示此对话框

输入参数

全部折叠

预设组名称,指定为字符向量或字符串标量。该组包含由 pref 输入参数指定的预设项。如果该组不存在,MATLAB 会创建该组。

示例: 'My Graphics'

预设名称,指定为字符向量或字符串标量。

此预设会存储用户点击的指定 pbtns 的按钮值。如果预设名称不存在,MATLAB 会创建该名称。

示例: 'Save Graphic'

对话框标题,指定为字符向量或字符串标量。

示例: 'Save preference'

对话框问题,指定为字符向量、字符向量元胞数组或字符串数组。问题文本按如下方式换行:

  • 如果将问题指定为字符向量,将在竖线 (|) 字符后进行换行或在 newline 函数所指定的换行符后进行换行。

  • 如果将问题指定为字符向量元胞数组,将在每个元胞数组元素后进行换行。

示例: {'Are you sure you want to convert this code?', 'Conversions cannot be undone.'}

示例: 'Do you want to save this file before closing?'

预设按钮标签,指定为字符向量、字符向量元胞数组、字符串数组或以竖线分隔的字符向量。

如果要指定与按钮标签不同的内部预设值,请将 pbtns 值指定为 2×n 元胞数组或字符串数组。第一行包含预设项名称,第二行包含关联的按钮标签。例如,如果您打算将对话框进行各种语言的本地化,则可以考虑使用这种方法。对于每种本地化语言,您可以使用该语言来指定按钮标签,而无需更改代码逻辑(例如 switchcase 语句)。

如果 pbtns 不是 2×n 元胞数组,MATLAB 会将标签名称存储为预设值。

示例: 'Yes'

示例: {'Yes','No'}

示例: ['Yes|No']

示例: {'Oui','Non';'yes','no'} 将按钮标签设置为 'Oui''Non',将对应的预设值设置为 'yes''no'

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例: line(x,y,'Color','red','LineWidth',3) 创建一个宽度为 3 磅的红色线条。示例: 'CheckboxSting','Do not ask again.'

对话框打开时复选框的初始状态,以逗号分隔的对组形式指定,该对组由 'CheckboxState'10truefalse 组成。

  • 当值为 true1 时,将选中复选框

  • 当值为 false0 时,不选中复选框。

示例: 'CheckboxState',0

复选框标签,以逗号分隔的对组形式指定,该对组由 'CheckboxString' 和一个字符向量或字符串标量组成。

帮助按钮标签,以逗号分隔的对组形式指定,该对组由 'Help' 和一个字符向量或字符串标量组成。如果不指定此名称-值对组,对话框中则不会显示帮助按钮。如果指定此名称-值对组,但不指定 HelpFcn 名称-值对组,则默认情况下 MATLAB 使用 'HelpFcn','doc(uigetpref)'

示例: 'HelpString','Info'

帮助按钮回调,以逗号分隔的对组形式指定,该对组由 'HelpFcn' 和一个函数句柄、字符串数组或字符向量(不推荐)组成。当用户点击帮助按钮时,将执行该回调。如果指定此名称-值对组,还必须指定 'HelpString' 名称-值对组。

另请参阅为以编程方式创建的 App 编写回调

示例: 'HelpFcn',@myfuncHelpFcn 回调函数指定为函数句柄。

其他按钮的标签,以逗号分隔的对组形式指定,该对组由 'ExtraOptions' 和一个字符向量、字符向量元胞数组或字符串数组组成。这些附加按钮不会关联到任何预设值。如果用户点击这些附加按钮中的任何按钮,对话框都将关闭并返回按钮标签作为输出参数 pval

示例: 'ExtraOptions','Cancel'

默认按钮选择,以逗号分隔的对组形式指定,该对组由 'DefaultButton' 和一个字符向量或字符串标量组成。如果用户关闭对话框而不点击任何按钮,将为 p 返回默认的按钮选择。此值无需与任何预设按钮或 ExtraOption 按钮对应。

示例: 'nobtn'

输出参数

全部折叠

选定的预设按钮,以字符串标量形式返回。返回下列值之一:

  • 点击的预设按钮 (pbtns) 的标签

  • 点击的预设按钮的内部值

true 或 false 结果,返回 1 或 0。如果打开了对话框,则此函数返回 1 (true)。否则,将返回 0。此值 (0) 对应于上次打开了对话框且用户选中了复选框(默认标签显为 '不再显示此对话框')的情况。

详细信息

全部折叠

非模态对话框

非模态对话框允许用户在响应该对话框之前与其他 MATLAB 窗口进行交互。非模态对话框也称为普通对话框。

预设

使用预设可以指定应用程序的行为方式以及用户与其交互的方式。预设在会话之间保持不变,并存储在预设数据库中。

uigetpref 函数使用的预设数据库与 MATLAB 内置产品相同。但是,uigetpref 将其设置的预设注册为单独的列表,以便它和 uisetpref 可以管理这些预设。

要修改使用 uigetpref 注册的预设,请使用 uisetprefsetpref。例如,使用 setpref 将预设值更改为 'ask'

提示

  • uigetpref 创建指定组和预设(如果当前不存在)。要删除您不再需要的预设组,请使用 rmpref

  • 要获得以前创建的组和预设的结构体,请使用 getpref 函数。

  • 当用户选中复选框不再显示此对话框并关闭对话框之后,将不再为同一个组和预设打开该对话框。要重新启用被抑制的对话框,请使用 setpref 将预设值设置为 'ask'

  • 对话框的用户并不知道您在创建对话框时指定的组和预设的名称。因此,要重新启用被预设抑制的对话框,用户可以调用 uisetpref 命令。

    uisetpref('clearall')
    按如上所示执行 uisetpref 将重新启用使用 uigetpref 定义的所有预设对话框,而不仅仅是最新的预设对话框。

在 R2006a 之前推出