代码之家  ›  专栏  ›  技术社区  ›  DaveSwans

Matlab应用程序设计器。使用下拉菜单打开和关闭面板

  •  0
  • DaveSwans  · 技术社区  · 6 年前

    我是matlab的新手,我想知道是否有人可以解释一下。 我正在使用Matlab R2017B和App Designer。

    我的问题: 我在GUI中有一个默认设置为不可见的面板。 我还有一个下拉菜单,其中存储了一些值:

    “请选择” “面板1” “面板2” “面板3” 等

    当我从下拉列表中选择面板1时,我希望该特定面板随后变得可见。ie回调:

    function DropDownValueChanged(app, event) app.Panel1.Visible = 'on';

    这一切都很好,但我似乎无法正确理解下一部分。 当我返回下拉列表并选择“panel 2”时,我希望程序关闭当前面板,然后通过从下拉列表中选择该值来打开名为“panel 2”的面板。

    我用可见性来定义这一点是错误的吗? 如何以更直观的方式将下拉列表值连接到相应的面板? 我一直在搞各种各样的教程,但还是没能让它发挥作用

    提前感谢

    1 回复  |  直到 6 年前
        1
  •  1
  •   scotty3785    6 年前

    您需要读取下拉列表的值,并使用该值来评估应该显示哪个面板。首先隐藏所有面板,然后只显示感兴趣的面板。我的 DropdownValueChanged 函数如下所示。

        % Value changed function: DropDown
        function DropDownValueChanged(app, event)
            value = app.DropDown.Value;
            % Hide all the panels
            app.Panel1.Visible = 'off';
            app.Panel2.Visible = 'off';
            app.Panel3.Visible = 'off';
    
            %If Panel 1 is selected, show panel 1
            if strcmp(value,'Panel 1')
                app.Panel1.Visible = 'on';
            elseif strcmp(value,'Panel 2')
                app.Panel2.Visible = 'on';
            elseif strcmp(value,'Panel 3')
                app.Panel3.Visible = 'on';
            end
        end
    

    我在 startupFcn 隐藏除第一个面板以外的所有面板。

        % Code that executes after component creation
        function startupFcn(app)
            app.Panel1.Visible = 'on';
            app.Panel2.Visible = 'off';
            app.Panel3.Visible = 'off';
        end