Matlab中waitfor函数用法

目录

语法

说明

示例

等待警告对话框关闭

等待属性值更改

等待属性更改为特定值


        waitfor阻止执行并等待条件

语法

waitfor(obj)

waitfor(obj,propname)

waitfor(obj,propname,propvalue)

说明

waitfor(obj) 可阻止语句的执行,直到指定的对象关闭(被删除)。当该对象不再存在时,waitfor 将返回并恢复语句的执行。如果该对象不存在,waitfor 将立即返回。

waitfor(obj,propname) 可指定对象的属性名称并阻止语句的执行,直到该属性值更改或该对象关闭。例如,waitfor(mytable,'Data') 会暂停语句执行,直到 mytable 的 'Data' 值更改。如果指定的属性名称无效,则执行仍会被阻止。

waitfor(obj,propname,propvalue) 可指定属性更改为何值时才恢复执行。如果指定的属性已等于propvalue,则waitfor会立即返回并恢复执行。

示例

等待警告对话框关闭

        创建一个警告对话框,并等待其关闭。在关闭对话框之前,waitfor后的命令不会执行。

mydlg = warndlg('This is a warning.', 'A Warning Dialog');
waitfor(mydlg);
disp('This prints after you close the warning dialog.');

等待属性值更改

        在将数据添加到表之前,等待用户选中复选框。复选框的Value属性在未选中时为0,在选中时为 1

t = uitable;
c = uicontrol('Style','checkbox','String','Add data');
c.Position = [320 100 80 20];
waitfor(c,'Value');
t.Data = magic(5);

等待属性更改为特定值

        当用户停止编辑文本字段并点击图窗中的其他位置时,更改文本字段的背景颜色。当文本字段失去焦点时,Editing属性从 'on' 更改为 'off'

txt = text(.5,.5,'Edit text and click');
txt.Editing = 'on';
txt.BackgroundColor = [1 1 1];

waitfor(txt,'Editing','off');
txt.BackgroundColor = [1 1 0];

对象

        对象,例如 Axes、Text、Panel、ButtonGroup、Table 或UIControl对象。该对象可以是用figure或uifigure函数创建的Figure对象的子对象,也可以是Figure对象中容器的子对象。

propname - 属性名称

        属性名称,指定为字符向量或字符串标量。使用此参数指定obj的一个特定属性,须在此属性的值更改之后才能恢复执行。

propvalue - 属性值
与 propname 相关联的有效属性值

        属性值,指定为与propname关联的有效属性值。使用此参数可指示属性必须更改为哪个具体值后才恢复执行。

提示

  • 如果在waitfor执行过程中关闭图窗,将会发生错误,因为代码尝试访问不再存在的对象。可以通过在try/catch块中包含waitfor来处理错误。

算法

        通常,在使用了waitfor来阻止程序或Simulink® 模型继续执行的情况下,回调仍可以运行。例如,即使已调用waitfor,用于响应用户操作的回调(如按下鼠标按键)仍可以运行。

  waitfor也可用于阻止嵌套函数调用。例如,在waitfor函数正运行时执行的回调也可调用waitfor。

        如果UI组件的某个回调函数当前正在执行waitfor函数,则可以中断该回调,而不管该组件的 Interruptible 属性值设置为何值。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值