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!