Ich versuche, den Status Enabled eines Kontrollkästchens in einer Matlab/Simulink-Maske (GUI) je nach dem Status eines anderen Kontrollkästchens festzulegen. Mit anderen Worten: Wenn das Kontrollkästchen A aktiviert ist, muss das Kontrollkästchen B deaktiviert (grau) werden. Ich habe versucht, eine Callback-Funktion auf das Kontrollkästchen A zu verwenden:Wie kann ich eine Matlab/Simulink-Maske abhängig vom Zustand der Maske ändern?
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
Aber wenn ich die Maske öffnen, erhalte ich eine Fehlermeldung:
-->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.
Wie kann ich mein erstes Ziel erreichen?
Ich sehe nichts falsch mit Code. Haben Sie überprüft, ob Parameternamen korrekt sind und ob Sie in der MATLAB-Befehlszeile dasselbe tun können? – Navan
Von der Matlab-Befehlszeile aus funktioniert es, d. H. Nachdem ich box_B.set ('Enabled', 'off') ausgegeben habe; und öffnen Sie die GUI erneut, Kontrollkästchen B ist ausgegraut. – lineinthesand