2017-01-23 102 views
0

我試圖設置一個複選框在matlab/simulink掩碼(GUI)中的啓用狀態,這取決於另一個複選框的狀態。換句話說:如果複選框A被選中,複選框B將被禁用(灰色)。 我試圖用一個回調函數上的複選框答:如何根據面罩的狀態修改matlab/simulink面罩?

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 

但是當我打開面膜,我得到一個錯誤:

-->Error evaluating 'MaskCallback' callback of TEST block (mask) 'test_simulink /Test test'. -->Invalid inputs specified for method 'set' -->Attempt to modify mask parameter name of block 'test_simulink/Test test' in its MaskCallbacks. Changing mask parameter name as part of MaskCallbacks is not allowed.

我怎樣才能實現我最初的目標是什麼?

+0

我沒有看到任何代碼錯誤。你是否檢查過參數名稱是否準確以及是否可以在MATLAB命令行中做同樣的事情? – Navan

+0

從matlab命令行,它工作,即我發出box_B.set('Enabled','off');並再次打開GUI,複選框B變灰。 – lineinthesand

回答

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