我们热爱生命科学!-生物行

[推荐] Matlab GUI编程中文参考手册(2)

时间:2006-01-11 15:51来源:Internet 作者:bioguider 点击: 1992次

 

11.3.3   用户菜单的属性
11.3.3.1 回调属性和菜单名
【*例11.3.3.1-1】本例的目标是:在图形窗上自制一个名为【Test】的“顶层菜单项”;当用鼠标点动该菜单项时,将产生一个带分格的封闭坐标轴。通过本例说明:(A)回调属性的运作机理;(B)用户顶层菜单项的制作(C)uimenu属性的设置方法;(D)复杂字符串的构成方法和注意事项。
(1)在MATLAB指令窗中运行以下程序可产生带分格的封闭坐标轴(见图11.3.3.1-1)
grid on,set(gca,'box','on')  


图11.3.3.1-1  带分格的封闭坐标轴

(2)在MATLAB指令窗中用以下eval指令可产生与图11.3.3.1-1相同的界面
eval('grid on,set(gca,''box'',''on'')')  


(3)产生图11.3.3.1-2界面的uimenu的书写格式一:直接连续表示法
uimenu('Label','Test','Callback','grid on,set(gca,''box'',''on''),')  
 
图11.3.3.1-2  通过顶层菜单Test形成的带分格的封闭坐标轴

(4)产生图11.3.3.1-2界面的uimenu的书写格式二:方括号续行号表示法
uimenu('Label','Test', ...
  'Callback',['grid on,' , ...
       'set(gca,''box'',''on'');'])  


(5)产生图11.3.3.1-2界面的uimenu的书写格式三:串变量法
Lpv='Test';
Cpv=['grid on,','set(gca,''box'',''on''),'];
uimenu('Label', Lpv, 'Callback' , Cpv)  

(6)产生图11.3.3.1-2界面的uimenu的书写格式四:构架表示法
PS.Label='Test';
PS.Callback=['grid on;','set(gca,''box'',''on'');'];
uimenu(PS)  

 

11.3.3.2 设置简捷键或快捷键
【*例11.3.3.2-1】本例目标:使图11.3.2-1所示菜单成为图11.3.3.2-1那样,Color菜单项及其下拉的Blue菜单各带一个简捷键,而另一项下拉菜单Red带一个快捷键。
[exm11332_1.m]
figure
h_menu=uimenu(gcf,'Label','&Color');   %带简捷键C的用户菜单Color <2>
h_submenu1=uimenu(h_menu,'Label','&Blue',... %带简捷键B的的下拉菜单Blue <3>
 'Callback','set(gcf,''color'',''blue'')');
h_submenu2=uimenu(h_menu,'label','Red',... %制作另一个下拉菜单Red
 'Callback','set(gcf,''color'',''red'')',...
 'Accelerator','r');       %为Red菜单设置快捷键R  <7>
 
图 11.3.3.2-1  为用户菜单设置快捷键

 

11.3.3.3 用户菜单的外观设计
【*例11.3.3.3-1】本例演示:(A)把用户菜单 'Option' 设置为顶层的第3菜单项;(B)下拉菜单被两条分隔线分为三个菜单区;(C)最下菜单项又有两个子菜单组成。
(1)编写程序,生成如图11.3.3.3-1所示界面
[exm11333_1.m]
figure
h_menu=uimenu('label','Option','Position',3);
h_sub1=uimenu(h_menu,'label','grid on','callback','grid on');
h_sub2=uimenu(h_menu,'label','grid off','callback','grid on');
h_sub3=uimenu(h_menu,'label','box on','callback','box on',...
 'separator','on');               %<6>
h_sub4=uimenu(h_menu,'label','box off','callback','box off');
h_sub5=uimenu(h_menu,'label','Figure Color','Separator','on');    %<8>
h_subsub1=uimenu(h_sub5,'label','Red','ForeGroundColor','r',...   %<9>
   'callback','set(gcf,''Color'',''r'')');
h_subsub2=uimenu(h_sub5,'label','Reset',...
   'callback','set(gcf,''Color'',''w'')');
 
图11.3.3.3-1


(2)位置属性的获取
Pos_O=get(h_menu,'position'),     %查询Option菜单位置值
Pos_BoxOn=get(h_sub3,'position')    %查询box ob子菜单位置值
Pos_Red=get(h_subsub1,'position')   %查询red子菜单的位置值  
Pos_O =
     3
Pos_BoxOn =
     3
Pos_Red =
     1  

 

【*例11.3.3.3-2】本例演示:当某菜单项选中后,如何使该菜单项贴上检录符“√”。
[exm11333_2.m]
figure
h_menu=uimenu('label','Option');
h_sub1=uimenu(h_menu,'label','Grid on',...        %<3>
 'callback',[...
  'grid on,',...
  'set(h_sub1,''checked'',''on''),',...
  'set(h_sub2,''checked'',''off''),',...
 ]);
h_sub2=uimenu(h_menu,'label','Grid off',...        %<4>
 'callback',[...
  'grid off,',...
  'set(h_sub2,''checked'',''on''),',...
  'set(h_sub1,''checked'',''off''),',...
  ]); 
 
图 11.3.3.3-2   Grid on菜单选中后出现检录符

 

11.3.3.4 使能(Enable)与可见性(Visible)属性
【*例11.3.3.4-1】 本例目标:制作一个带四个子菜单项的顶层菜单项;该下拉菜单分为两个功能区;每个功能区的两个菜单项是相互对立的,因此采用使能属性处理;当图形窗坐标轴消隐时,整个坐标分隔控制功能区不可见。
(1)编写如下脚本M文件exm11334_1.m
[exm11334_1.m]
clf
h_menu=uimenu('label','Option');   %产生顶层菜单项Option
h_sub1=uimenu(h_menu,'label','Axis on'); %产生Axis on菜单项,由缺省设置而使能
h_sub2=uimenu(h_menu,'label','Axis off',...
   'enable','off');       %产生Axis off菜单项,但失能
h_sub3=uimenu(h_menu,'label','Grid on',...
   'separator','on','visible','off');  %产生与上分隔的Grid on菜单项,但不可见
h_sub4=uimenu(h_menu,'label','Grid off',...
   'visible','off');       %产生Grid off菜单项,但不可见
set(h_sub1,'callback',[...     %选中Axis on菜单项后,产生回调操作
   'Axis on,',...         %画坐标
   'set(h_sub1,''enable'',''off''),',...  %Axis on菜单项失能
   'set(h_sub2,''enable'',''on''),',...  %Axis off菜单项使能
   'set(h_sub3,''visible'',''on''),',...  %Grid on菜单项可见
   'set(h_sub4,''visible'',''on''),']);  %Grid off菜单项可见
set(h_sub2,'callback',[...     % %选中Axis off菜单项后,产生回调操作   
   'axis off,',...        %使坐标消失
   'set(h_sub1,''enable'',''on''),',...  %Axis on菜单项使能
   'set(h_sub2,''enable'',''off''),',...  %Axis off菜单项失能
   'set(h_sub3,''visible'',''off''),',...  %Grid on菜单项不可见
   'set(h_sub4,''visible'',''off''),']);  %Grid off菜单项不可见
set(h_sub3,'callback',[...     %选中Grid on菜单项后,产生回调
 'grid on,',...        %画坐标分格线
 'set(h_sub3,''enable'',''off''),',...  %Grid on菜单项失能
 'set(h_sub4,''enable'',''on''),']);  %Grid off菜单项使能
set(h_sub4,'callback',[...     %选中Grid off菜单项,产生回调
 'grid off,',...        %消除坐标分格线
 'set(h_sub3,''enable'',''on''),',...  %Grid on菜单项使能
 'set(h_sub4,''enable'',''off''),']);  %Grid off菜单项失能 
(2)在MATLAB指令窗中运行exm11334_1 ,得到图11.3.3.4-1所示的界面
 
图11.3.3.4-1

(责任编辑:泉水)
顶一下
(19)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片