【问题标题】:show axes on click - matlab单击时显示轴 - matlab
【发布时间】:2015-05-17 20:58:26
【问题描述】:

我有一个列表框按钮,假设它包含 3 个选项:“1”“2”“3”。 我也有 5 个轴。 选择'2'时,我在这个5轴上绘制一些东西。 我想知道的是如何再制作 5 个轴,仅在选择 '3' 的情况下才会显示。 我的意思是用户将无法看到轴 6~10,直到他按下“3”,如果他按下“1”或“2”,那么用户将再次无法看到它们。

【问题讨论】:

    标签: matlab user-interface listbox matlab-guide


    【解决方案1】:

    您可以将共享相同属性(即同时可见或不可见)的轴分组为 1 个变量(例如 TopAxesBottomAxes),从而在列表框中同时更新它们的属性回调。

    这是一个有 6 个轴的示例,其中 3 个在顶部,3 个在底部。当用户选择 "1" 时,所有轴都是可见的。选择“2”时,仅顶部轴可见,而选择“3”时,仅底部轴可见。这是带有屏幕截图的代码:

    function ShowAxesGUI
    
    clear
    clc
    
    hFig = figure('Position',[100 100 600 600]);
    
    %// Create axes
    handles.ax1 = axes('Position',[.1 .6 .2 .2]);
    handles.ax2 = axes('Position',[.4 .6 .2 .2]);
    handles.ax3 = axes('Position',[.7 .6 .2 .2]);
    
    %// Group top axes together
    handles.TopAxes= [handles.ax1;handles.ax2;handles.ax3];
    
    handles.ax4 = axes('Position',[.1 .2 .2 .2]);
    handles.ax5 = axes('Position',[.4 .2 .2 .2]);
    handles.ax6 = axes('Position',[.7 .2 .2 .2]);
    
    %// Group bottom axes together
    handles.BottomAxes= [handles.ax4;handles.ax5;handles.ax6];
    
    set(handles.BottomAxes,'Visible','off')
    
    %//  Create listbox
    
    handles.listbox1 = uicontrol('Style','list','Position',[50 520 60 60],'Value',1,'String',{'1';'2';'3'},'Callback',@(s,e) ListCallback);
    
    guidata(hFig,handles)
    
        %// Listbox callback
        function ListCallback
    
            handles = guidata(hFig);
    
            %// Get the selected item in the listbox
            ListSelection = get(handles.listbox1,'Value');
    
            switch ListSelection
    
                case 1                
                    set(handles.TopAxes,'Visible','on')
                    set(handles.BottomAxes,'Visible','on')
                case 2
                    set(handles.TopAxes,'Visible','on')
                    set(handles.BottomAxes,'Visible','off')
                case 3
                    set(handles.TopAxes,'Visible','off')
                    set(handles.BottomAxes,'Visible','on')
            end
    
            guidata(hFig,handles)
        end
    end
    

    有 3 个不同的选项:

    1)

    2)

    3)

    就是这样。祝你好运!

    【讨论】:

    • 感谢我使用了它,它运行良好。我还有一个问题:我可以对其他按钮做同样的效果吗? AKA 我可以使用 [visible off ] 来获得更多按钮吗?编辑:我发现它确实适用于其他人,谢谢队友
    猜你喜欢
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 2017-06-07
    • 2020-11-27
    相关资源
    最近更新 更多