【问题标题】:How can I modify a matlab/simulink mask depending of the state of the mask?如何根据掩码的状态修改 matlab/simulink 掩码?
【发布时间】:2017-01-23 15:48:17
【问题描述】:

我正在尝试根据另一个复选框的状态在 matlab/simulink 掩码 (GUI) 中设置复选框的启用状态。换句话说:如果复选框 A 被选中,则复选框 B 应被禁用(灰色)。 我尝试在复选框 A 上使用回调函数:

box_A = get_param(gcb, 'checkBoxA');
m = Simulink.Mask.get(gcb);
box_B = m.getParameter('checkBoxB');

if strcmp(box_A, 'on')
    box_B.set('Enabled', 'off');
end

但是当我打开面具时,我得到一个错误:

-->评估测试块(掩码)“test_simulink /Test test”的“MaskCallback”回调时出错。 --> 为方法“set”指定的输入无效-->尝试在其 MaskCallbacks 中修改模块“test_simulink/Test test”的封装参数名称。不允许在 MaskCallbacks 中更改掩码参数名称。

我怎样才能实现我最初的目标?

【问题讨论】:

  • 我看不出代码有什么问题。您是否检查过参数名称是否准确以及您是否能够在 MATLAB 命令行中执行相同的操作?
  • 从 matlab 命令行,它工作,即在我发出 box_B.set('Enabled', 'off');并再次打开 GUI,复选框 B 为灰色。

标签: matlab simulink


【解决方案1】:

我终于找到了解决办法;诀窍不是使用 set 函数,而是分配给 Enabled 属性:

box_A = get_param(gcb, 'checkBoxA');
m = Simulink.Mask.get(gcb);
box_B = m.getParameter('checkBoxB');

if strcmp(box_A, 'on')
    box_B.Enabled = 'off';
else
    box_B.Enabled = 'on';
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-04
    • 2018-01-09
    • 1970-01-01
    • 2020-02-29
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多