Guide handing objects to functions
조회 수: 5 (최근 30일)
이전 댓글 표시
Using Guide I have two radiobuttons. When pushing one the other has to be unchecked. So far this is my solution:
function distButton_Callback(hObject, eventdata, handles)
checkThis = get(handles.distButton, 'Value');
checkThat = get(handles.fftButton, 'Value');
if checkThis == checkThat
set(handles.fftButton, 'Value', ~checkThis);
end
Since there are four button pairs a function would save a couple of lines.
Calling the function:
checkThis('distButton', 'fftButton', handles);
However combining handles. with a string does not seem to convert this to 'distButton'
> Reference to non-existent field 'this'.
function checkThis(this, that, handles)
checkThis = get(handles.this, 'Value');
checkThat = get(handles.that, 'Value');
if checkThis == checkThat
set(handles.that, 'Value', ~checkThis);
end
It's probably a simple matter of syntax..
댓글 수: 2
Adam
2018년 8월 17일
Why are you not just placing the radio buttons inside a uibuttongroup which does the mutual exclusivity for you?
채택된 답변
ES
2018년 8월 17일
function checkThis(this, that, handles)
checkThis = get(eval(['handles.', this]), 'Value');
checkThat = get(eval(['handles.', that]), 'Value');
if checkThis == checkThat
set(eval(['handles.', that]), 'Value', ~checkThis);
end
댓글 수: 3
Stephen23
2018년 8월 17일
편집: Stephen23
2018년 8월 17일
Do NOT follow this answer! There is absolutely no point in using ugly eval like that, unless you want to force yourself into writing slow, complex, buggy, hard-to-debug code.
It is so easy to write simpler and much more efficient code:
function checkThis(this, that, handles)
checkThis = get(handles.(this),'Value');
checkThat = get(handles.(that),'Value');
if checkThis==checkThat
set(handles.(that),'Value',~checkThis);
end
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Interactive Control and Callbacks에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!