声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1990|回复: 9

[GUI界面] 基于.m文件(not guide)的文件菜单的编写

[复制链接]
发表于 2010-8-25 09:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
  1. %菜单的创建和使用
  2. %uimenu最重要的属性是label和callback。label属性值是菜单条和下拉菜单项的文本字符串。
  3. %callback属性值是MATLAB字符串,为调用函数,其作用是当选中菜单项时传给eval用以执行
  4. %
  5. hmE=uimenu(gcf,'label','Exa&mple'); %Example为顶部菜单,默认放在菜单栏最后
  6. hmEsub1=uimenu(hmE,'label','Grid','callback','Grid');%callback的值是字符串
  7. hmEsub2=uimenu(hmE,'label','View');
  8. hmEsub21=uimenu(hmEsub2,'label','Sin', 'callback','plot(sin([0:0.05*pi:2*pi]),''r'')');
  9. hmEsub22=uimenu(hmEsub2,'label','Cos', 'callback','plot(cos([0:0.05*pi:2*pi]),''b'')');
  10. %分隔线Separator
  11. hmEsub3=uimenu(hmE,'label','Hold','Callback','hold','separator','on');
  12. hmEsub4=uimenu(hmE,'label','Grid On','callback','grid on;set(gca,''box'',''on'')');
  13. %hmEsub4.label='Grid On';hmEsub4.callback=['grid on;','set(gca,''box'',''on'')'];uimenu(hmE,hmEsub4);
  14. hmC=uimenu(gcf,'label','Close');
  15. hmCsub1=uimenu(hmC,'label','Remove Example Menu','callback','delete(hmE);drawnow');
  16. hmCsub2=uimenu(hmC,'label','Close Figure', 'callback','close');
  17. %菜单快捷键
  18. hmD=uimenu(gcf,'label','&Color');
  19. hmDsub1=uimenu(hmD,'label','&Blue', 'Callback','set(gcf,''color'',''blue'')', 'Accelerator','b');
  20. %菜单的外观
  21. set(gcf,'menubar','none'); %set(gcf,'menubar','figure')

  22. %位置Position
  23. hmO=uimenu('label','&Option','Position',4);
  24. %标志Checked
  25. hmOsub1=uimenu(hmO,'label','grid on', 'callback',[ 'grid on;', ...
  26.     'set(hmOsub1,''checked'',''on'');',  'set(hmOsub2,''checked'',''off'');']);
  27. hmOsub2=uimenu(hmO,'label','grid off', 'callback',[ 'grid off;',...
  28.     'set(hmOsub2,''checked'',''on'');', 'set(hmOsub1,''checked'',''off'');']);
  29. %可用性Enable与可见性Visible
  30. option=uimenu('label','Option');
  31. op_sub1=uimenu(option,'label','axis on'); op_sub2=uimenu(option,'label','axis off','enable','off');
  32. op_sub3=uimenu(option,'label','grid on','separator','on','visible','off');
  33. op_sub4=uimenu(option,'label','grid on','visible','off');
  34. set(op_sub1,'callback',['axis on;', 'set(op_sub1,''enable'',''off'');', 'set(op_sub2,''enable'',''on'');',...
  35.     'set(op_sub3,''visible'',''on'');', 'set(op_sub4,''visible'',''on'');']);
  36. set(op_sub2,'callback',['axis off;', 'set(op_sub1,''enable'',''on'');', 'set(op_sub2,''enable'',''off'');',...
  37.     'set(op_sub3,''visible'',''off'');', 'set(op_sub4,''visible'',''off'');']);
  38. set(op_sub3,'callback',['grid on;', 'set(op_sub3,''visible'',''off'');', 'set(op_sub4,''visible'',''on'');']);
  39. set(op_sub4,'callback',['grid off;', 'set(op_sub3,''visible'',''on'');', 'set(op_sub4,''visible'',''off'');']);
  40. %创建右键弹出菜单
  41. t=0:0.05*pi:2*pi; y=sin(t)./t;hline=plot(t,y); cm=uicontextmenu;
  42. uimenu(cm,'label','Red','callback','set(hline,''color'',''r''),');
  43. uimenu(cm,'label','Green','callback','set(hline,''color'',''g''),');
  44. uimenu(cm,'label','Blue','callback','set(hline,''color'',''b''),');
  45. set(hline,'uicontextmenu',cm);
复制代码

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2010-8-29 13:49 | 显示全部楼层
呵呵,我喜欢用这种模式做GUI。
谢谢分享。
我在MATLAB2009b中运行,有些警告。
发表于 2010-8-30 11:02 | 显示全部楼层
最近也在学习中,先给你顶一下吧:handshake
 楼主| 发表于 2010-8-31 22:21 | 显示全部楼层
回复 paradiseboy 的帖子


    m文件形式的gui代码紧凑,还能实现guide不能实现的一些功能,但比较大一点的gui,编写代码就比较麻烦了;
发表于 2010-9-1 01:06 | 显示全部楼层
试了下的确有些警告, 应该尚有精进的地方!
发表于 2010-9-1 04:56 | 显示全部楼层
个人推荐一下,欢迎大家积极分享自己的经验
 楼主| 发表于 2010-9-7 22:31 | 显示全部楼层
回复 ChaChing 的帖子


   这个文件是我在学习过程不断添加进去的,介意学习的同志们进入debugger模式或者是cell模式一段一段的执行!(执行前面一段可以将后面的注释掉,Ctrl+R或者是text-->comment就可以了!
发表于 2010-9-9 15:21 | 显示全部楼层
相对来讲,还是编码的方式实现的功能要多一些,不过gui的方式比较简单好操作,关于这一方面可以看一些游戏的程序,尤其推荐初学者看看“萝卜驿站”的程序,对编码的方法的学习大有裨益

评分

1

查看全部评分

发表于 2011-10-22 14:41 | 显示全部楼层
好资料,学习了
发表于 2011-10-27 15:26 | 显示全部楼层
学习中。。.
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-26 13:06 , Processed in 0.079754 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表