Matlab 如何获取单选按钮的选定值?
我不是matlab程序员,但我需要用matlab创建一个接口! 这个问题对于matlab程序员来说应该很容易:) 我有一个包含单选按钮组面板“OperationPanel”的界面 ,其中有4个单选按钮,名称为“addBtn、subBtn、divBtn、mulBtn”,我有命令按钮,当我点击按钮时,我想获得所选单选按钮的值 我应该使用什么命令?我搜索了一下,发现如果我Matlab 如何获取单选按钮的选定值?,matlab,radio-button,Matlab,Radio Button,我不是matlab程序员,但我需要用matlab创建一个接口! 这个问题对于matlab程序员来说应该很容易:) 我有一个包含单选按钮组面板“OperationPanel”的界面 ,其中有4个单选按钮,名称为“addBtn、subBtn、divBtn、mulBtn”,我有命令按钮,当我点击按钮时,我想获得所选单选按钮的值 我应该使用什么命令?我搜索了一下,发现如果我 get(handles.NewValue,'Tag'); 我累了,但是不行!!我能得到一些帮助吗 是否已将句柄设置为hOjbec
get(handles.NewValue,'Tag');
我累了,但是不行!!我能得到一些帮助吗 是否已将
句柄设置为hOjbect
?另外,不要忘记在处理单选按钮事件后更新句柄。你看过这个吗?向下滚动至第3部分第5步,查看以下三个单选按钮的示例代码:
function fontSelect_buttongroup_SelectionChangeFcn(hObject, eventdata)
%retrieve GUI data, i.e. the handles structure
handles = guidata(hObject);
switch get(eventdata.NewValue,'Tag') % Get Tag of selected object
case 'fontsize08_radiobutton'
%execute this code when fontsize08_radiobutton is selected
set(handles.display_staticText,'FontSize',8);
case 'fontsize12_radiobutton'
%execute this code when fontsize12_radiobutton is selected
set(handles.display_staticText,'FontSize',12);
case 'fontsize16_radiobutton'
%execute this code when fontsize16_radiobutton is selected
set(handles.display_staticText,'FontSize',16);
otherwise
% Code for when there is no match.
end
%updates the handles structure
guidata(hObject, handles);
下面是一个快速示例,演示如何获取单选按钮组组件的值:
function simpleGUI
hFig = figure('Visible','off', 'Menu','none', 'Name','Calculator', 'Resize','off', 'Position',[100 100 350 200]);
movegui(hFig,'center') %# Move the GUI to the center of the screen
hBtnGrp = uibuttongroup('Position',[0 0 0.3 1], 'Units','Normalized');
uicontrol('Style','Radio', 'Parent',hBtnGrp, 'HandleVisibility','off', 'Position',[15 150 70 30], 'String','Add', 'Tag','+')
uicontrol('Style','Radio', 'Parent',hBtnGrp, 'HandleVisibility','off', 'Position',[15 120 70 30], 'String','Subtract', 'Tag','-')
uicontrol('Style','Radio', 'Parent',hBtnGrp, 'HandleVisibility','off', 'Position',[15 90 70 30], 'String','Multiply', 'Tag','*')
uicontrol('Style','Radio', 'Parent',hBtnGrp, 'HandleVisibility','off', 'Position',[15 60 70 30], 'String','Divide', 'Tag','/')
uicontrol('Style','pushbutton', 'String','Compute', 'Position',[200 50 60 25], 'Callback',{@button_callback})
hEdit1 = uicontrol('Style','edit', 'Position',[150 150 60 20], 'String','10');
hEdit2 = uicontrol('Style','edit', 'Position',[250 150 60 20], 'String','20');
hEdit3 = uicontrol('Style','edit', 'Position',[200 80 60 20], 'String','');
set(hFig, 'Visible','on') %# Make the GUI visible
%# callback function
function button_callback(src,ev)
v1 = str2double(get(hEdit1, 'String'));
v2 = str2double(get(hEdit2, 'String'));
switch get(get(hBtnGrp,'SelectedObject'),'Tag')
case '+', res = v1 + v2;
case '-', res = v1 - v2;
case '*', res = v1 * v2;
case '/', res = v1 / v2;
otherwise, res = '';
end
set(hEdit3, 'String',res)
end
end
显然,您可以在输入数字上添加更多验证,等等…如果使用下面的语法,您将得到一个错误:
get(handles.NewValue,'Tag')
你应该使用的是
get(eventdata.NewValue, 'Tag')
关键是当您查看SelectionChangeFcn时-您实际上要查找的是已触发的新事件以及与该事件关联的新值。您不必使用“Tag”-您甚至可以使用“String”或其他适合您上下文的属性。上述代码适用于may project
function pushbutton_startProcess_Callback(hObject, eventdata, handles)
set(handles.edit1,'String',get(handles.edit2,'String'));
switch get(get(handles.uipanel3,'SelectedObject'),'Tag')
case 'wavelet_method', set(handles.edit1,'String','wavelet_method');
case 'glcm_method', set(handles.edit1,'String','glcm_method');
case 'ewd_method', set(handles.edit1,'String','ewd_method');
case 'wavelet_gclm_method', set(handles.edit1,'String','wavelet_glcm_method');
otherwise, set(handles.edit1,'String','boş');
end
@gray comtois,是的,我看过Matlab GUI教程,但是这个功能“fontSelect_buttongroup_SelectionChangeFcn()”是按钮组的动作,我想在命令按钮上进行动作。回答很好,但我不熟悉Matlab中的GUI编程,我只是拖放到工具上,我添加了radioButton组面板并添加了indide中的所有rbuttons,但我不知道如何使它们都属于同一组。@Alaa:当您在指南中创建radioButton时,请确保将它们放入我创建的面板中,它现在可以工作了,但我在单选按钮上执行操作,而不是在按钮上执行@gary comtois向我显示的操作,我试图在按钮的回调函数中调用单选按钮的action方法,但它不起作用,你有什么建议吗?这正是我在上面的示例中所展示的。按下按钮后,它从radiobuttons组检索当前选择,并使用开关
块应用该操作(get(handleRadioGroup,'SelectedObject')
然后检索字符串
或标记
属性)