【问题标题】:Matlab GUI: Selecting a number from a popup menuMatlab GUI:从弹出菜单中选择一个数字
【发布时间】:2013-07-23 15:14:48
【问题描述】:

我有一个大小为 50 x 1 的变量 d 和包含数字的 double 类。我正在尝试将其包含在 Matlab GUI 的弹出菜单中。我目前正在这样做:

d = cellfun(@num2str, num2cell(handles.zRaw(:)), 'uniformoutput', false);
S.T2pm5 = uicontrol('Style', 'popupmenu', 'BackgroundColor', 'w', 'Parent',...
            T2vbox6, 'String', {'Choose a Number', d{:}}, 'value', 1);

但是,使用str2double(get(S.T2pm5, 'value')); 从上述弹出菜单中进行的任何选择都会将所有数字输出到单个字符串变量中。如何仅输出用户通过弹出菜单选择的单个数字而不是那里存在的所有值?

【问题讨论】:

    标签: string matlab user-interface popup double


    【解决方案1】:

    您可以通过添加一个同时使用弹出菜单的值和字符串属性的回调来做到这一点。这是一个工作示例:

    使用回调创建弹出菜单

    T2vbox6 = figure();
    handles.zRaw = [10,20,30,40,50];
    d = cellfun(@num2str, num2cell(handles.zRaw(:)), 'uniformoutput', false);
    S.T2pm5 = uicontrol('Style', 'popupmenu', 'BackgroundColor', 'w', 'Parent',...
                T2vbox6, 'String', {'Choose a Number', d{:}}, 'value', 1,...
                'callback', @someMenuCallBack);
     str2double(get(S.T2pm5, 'value'))
    

    然后定义回调:

    function someMenuCallBack(hObj,event)
    
    d = str2double(get(hObj, 'String'));
    val = get(hObj,'Value');
    disp(d(val))
    

    这将显示用户在命令行中选择的值。

    【讨论】:

    • 我从改变变量类型的角度考虑更多,而不是这种解决方法,这当然工作得很好。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    相关资源
    最近更新 更多