《拿来吧你》MATLAB GUI 快速批量生成菜单栏

《拿来吧你》MATLAB GUI 快速批量生成菜单栏

  • 视频教学地址
  • 一、菜单栏基本方法
  • 二、利用Excel快速批量生成菜单栏
  • 其他

几个菜单栏还好,当功能超多选项超多,写起来就真的心累。增删改困难,还不利于管理。
所以给大家分享一个利用excel一篇批量生成菜单栏的方法。

by 今天不飞了


视频教学地址

《拿来吧你》MATLAB GUI (一)快速生成菜单栏


一、菜单栏基本方法

所需函数uimenu(Fig,'Text',menuname),使用方法演示代码如下

function MenuTest()

Fig = figure('Name','test','Position',[600,400,600,600],...
    'menu','none','Color','white','NumberTitle','off');

M0 = uimenu(Fig,'Text','文件');
M1 = uimenu(Fig,'Text','编辑'); 

M0_1 = uimenu(M0,'Text','显示红图'); 
M0_2 = uimenu(M0,'Text','显示蓝图'); 

M0_1.MenuSelectedFcn = @doit1;
M0_1.Checked = 'off';
M0_1.Separator = 'off';
M0_1.Accelerator = 'A';

M0_2.MenuSelectedFcn = @doit2;
M0_2.Checked = 'off';
M0_2.Separator = 'off';
M0_2.Accelerator = 'B';

Axes = axes(Fig,'Position',[0.1,0.1,0.8,0.8]);

    function doit1(~,~)
        M0_1.Checked = 'on';
        M0_2.Checked = 'off';
        im = cat(3,ones(100),zeros(100),zeros(100));
        imshow(im,'Parent',Axes)
    end

    function doit2(~,~)
        M0_1.Checked = 'off';
        M0_2.Checked = 'on';
        im = cat(3,zeros(100),zeros(100),ones(100));
        imshow(im,'Parent',Axes)
    end

end

二、利用Excel快速批量生成菜单栏

首先建立一个如下格式的excel表,放在代码同路径下

《拿来吧你》MATLAB GUI 快速批量生成菜单栏_第1张图片

核心代码CreateMenu(Fig),调用方式如下

function FastMenuTest()

% 主界面
H.Fig = figure('Name','test','Position',[900,500,600,400],...
    'menu','none','Color','white','NumberTitle','off');
% 菜单栏
CreateMenu(H)

    % 菜单栏生成函数
    function CreateMenu(HMenu)
        % 获取菜单列表
        [~,~,menuList] = xlsread('menulist.xlsx'); % 请改成你的xls文件名
        menuList = menuList(2:end,:);
        menuNum = size(menuList,1);
        % 重排序
        [~,idx] = sort(cell2mat(menuList(:,1)));
        menuList = menuList(idx,:);
        
        % 开始创建
        params = {'Text','MenuSelectedFcn','Checked','Separator','Accelerator'};
        for mn = 1:menuNum
            menuinfo = menuList(mn,:);
            % 初始化
            Hname = strcat('HMenu.',menuinfo{2});
            if menuinfo{1}==0
                str = strcat(Hname,'=uimenu(HMenu.Fig);');
            else
                str = strcat(Hname,'=uimenu(','HMenu.',menuList{menuinfo{1},2},');');
            end
            eval(str)
            % 设置参数
            for n = 1:5
                if isnan(menuinfo{n+2})
                   continue
                end
                if n==2
                    str = strcat(Hname,'.',params{n},'=@',menuinfo{n+2},';');  
                else
                    str = strcat(Hname,'.',params{n},'=menuinfo{',num2str(n+2),'};');  
                end
                eval(str)
            end
        end
    end
end

其他

  1. 使用方法如不清楚请观看前文中视频教学

你可能感兴趣的:(MATLAB,matlab,开发语言,GUI)