Chinaunix首页 | 论坛 | 博客
  • 博客访问: 686698
  • 博文数量: 90
  • 博客积分: 1631
  • 博客等级: 上尉
  • 技术积分: 1413
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-15 22:43
文章分类
文章存档

2017年(8)

2016年(9)

2015年(11)

2014年(10)

2013年(9)

2012年(9)

2010年(2)

2009年(10)

2008年(22)

我的朋友

分类: C#/.net

2015-08-04 11:47:11

这是以前在中文论坛发过的帖子,现在转到这里。

大家做界面的时候应该遇到过这样的问题:如何查询并选择MATLAB工作空间(workspace)中的变量?

关键是我们可能事先不知道workspace中都有什么变量,就想通过一个界面查看workspace中的所有变量,并选择所需变量。为此,我做了一个GUI界面,用来通过界面操作查询并选择工作空间里的变量。GUI界面中带有下拉菜单,用来显示工作空间里的所有变量的相关信息,包括变量名,变量类型和大小。

界面效果如下图:
 

界面中用到的图标文件如下:
 

程序代码如下:

点击(此处)折叠或打开

  1. function xie_vardata = VarSelect
  2. %选择工作空间里的变量
  3. % vardata = VarSelect,通过GUI界面操作选择工作空间里的变量. GUI界面中带有下拉
  4. % 菜单,用来显示工作空间里的所有变量的相关信息,包括变量名,变量类型和大小.
  5. %
  6. % Copyright xiezhh.
  7. % $Revision: 1.0.0.1 $ $Date: 2010/06/11 09:43:00 $
  8. OldHandle = findobj( 'Type', 'figure', 'Tag', 'VarSelect' ) ;
  9. if ishandle( OldHandle )
  10.     close( OldHandle ) ;
  11. end
  12. scnsize = get(0,'screensize');
  13. fs = 12*sqrt(scnsize(3)*scnsize(4)/(1024*768));
  14. fig = figure('units','normalized','position',[0.35 0.35 0.3 0.2],...
  15.     'menubar','none','name','选择工作窗口变量','resize','off',...
  16.     'numbertitle','off','color',[0.925 0.914 0.847],'tag','VarSelect');
  17. icon_VarSelect = imread('tubiao.jpg');
  18. uicontrol(fig,'style','radiobutton','units','normalized',...
  19.     'pos',[0.025 0.3 0.265 0.48],'string','',...
  20.     'cdata',icon_VarSelect,'bac',[0.925 0.914 0.847])
  21. uicontrol(fig,'style','text','units','normalized',...
  22.     'pos',[0.475 0.73 0.35 0.15],'string','选择变量',...
  23.     'fontsize',fs,'fontweight','bold','fontunits','normalized')

  24. s = evalin('base','whos');
  25. VarNames = char(s.name);
  26. if isempty(VarNames)
  27.     VarNames = '当前窗口没有变量';
  28.     popstring = VarNames;
  29. else
  30.     for i = 1:size(VarNames,1)
  31.         popstring{i,:} = [VarNames(i,:),', 类型:',s(i).class,', 大小:',...
  32.             num2str(s(i).size(1)),'X',num2str(s(i).size(2))];
  33.     end
  34. end
  35. setappdata(gcf,'VarNames',VarNames);

  36. uicontrol(fig,'style','popupmenu','units','normalized',...
  37.     'pos',[0.35 0.33 0.59 0.337],'string',popstring,...
  38.     'fontsize',fs,'fontunits','normalized',...
  39.     'backgroundcolor',[1 1 1],'tag','VarShow','value',1)
  40. uicontrol(fig,'style','push','units','normalized',...
  41.     'pos',[0.4 0.2 0.18 0.21],'string','确 定',...
  42.     'fontsize',fs,'fontweight','bold',...
  43.     'fontunits','normalized','callback',...
  44.     ['handles = guidata(gcf);',...
  45.     'value = get(handles.VarShow,''value'');'...
  46.     'VarNames = getappdata(gcf,''VarNames'');'...
  47.     'if ~strcmp(VarNames,''当前窗口没有变量'');'...
  48.         'bs = VarNames(value,:);'...
  49.         'xie_vardata = eval(bs);'...
  50.         'set(gcf,''userdata'',xie_vardata);'...
  51.     'end;'...
  52.     'evalin(''base'',''clear value VarNames handles bs xie_vardata'');'...
  53.     'uiresume(gcbf);']);
  54. uicontrol(fig,'style','push','units','normalized',...
  55.     'pos',[0.7 0.2 0.18 0.21],'string','取 消',...
  56.     'fontsize',fs,'fontweight','bold',...
  57.     'fontunits','normalized','callback',...
  58.     ['set(gcf,''userdata'',[]);'...
  59.     'delete(gcbf);']);
  60. handles = guihandles(gcf);
  61. guidata(gcf,handles);
  62. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  63. uiwait(gcf);
  64. if nargout>0
  65.     xie_vardata = get(gcf,'userdata');
  66. end
  67. if ishandle(fig)
  68.     delete(fig);
  69. end

阅读(3768) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~