Matlab gui一次只选择一个复选框

时间:2013-12-24 10:49:03

标签: matlab matlab-figure matlab-guide

我正在使用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);

1 个答案:

答案 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)