我正在使用matlab GUI。我有一个放在uipanel上的3个复选框(A,B,C)。我想一次选择1个复选框(例如,当选择A时,B和C应该被自动取消选择。我知道这可以用单选按钮实现,但我也在寻找无复选框选择这就是为什么我不使用收音机按钮。所以这是我要找的两件事:
1)一次只选中一个复选框,其他两个复选框被自动取消选中。 2)不允许选择复选框(默认情况下这是可用的,这也是我没有使用单选按钮的原因)
我似乎无法弄明白。我插入了一个uipanel并使用了以下代码,但这并不起作用。任何想法或替代品??
function uipanel1_Callback(hObject, eventdata, handles)
handles = guidata(hObject);
checkbox1=get(handles.checkbox1,'Value');
checkbox2=get(handles.checkbox2,'Value');
set(handles.edit1,'String',checkbox1); %just for checking if working or not
if checkbox1==1
set(handles.checkbox2,'Value',0);
set(handles.checkbox1,'Value',1);
set(handles.edit1,'String','check1'); %just for checking
end
if checkbox2==1
set(handles.checkbox1,'Value',0);
set(handles.checkbox2,'Value',1);
end
% Update handles structure
guidata(hObject, handles);
答案 0 :(得分:0)
您可以使用单选按钮组并添加一个选项(“无选择”),或者您可以使用带有3个选项的单选按钮组,并添加按钮以将所有选项设置为关闭
如果你想使用复选框,当你为每个复选框写回调而不是uipanel时,它会起作用(我根本没有评估uipanel的回调)(这里我假设在MyUipanel中只有复选框):
function MyCheckboxCallback(hObject, eventdata, handles)
other = setdiff(get(handles.MyUipanel,'Children'),hObject);
for ii = 1:length(other)
set(other(ii),'Value',get(other(ii),'Min'));
end
function MyCheckbox1_Callback(hObject, eventdata, handles)
MyCheckboxCallback(hObject, eventdata, handles)
function MyCheckbox2_Callback(hObject, eventdata, handles)
MyCheckboxCallback(hObject, eventdata, handles)
function MyCheckbox3_Callback(hObject, eventdata, handles)
MyCheckboxCallback(hObject, eventdata, handles)