matlab中gui教程(4)

2019-03-22 17:43

11.5.3 利用递归法编写用户界面函数文件

【*例11.5.3-1】目标:利用M函数文件创建与例11.4.3.3-1相同的用户界面。本例演示:如何依靠图形窗'UserData' 属性在递归调用中传送用户控件的图柄,保证回调动作正确执行。 (1)编写M函数文件exm1153_1.m [exm1153_1.m]

function exm1153_1(flag)

if nargin<1;flag='startup';end %允许在无输入宗量形式下调用该函数 <2> if ~ischar(flag);error('flag must be character ''startup''.');end

switch flag %切换控制 <4> case 'startup' % <5> clf reset % <6> set(gcf,'unit','normalized','position',[0.1,0.4,0.85,0.35]); set(gcf,'defaultuicontrolunits','normalized'); set(gcf,'defaultuicontrolfontsize',11); set(gcf,'defaultuicontrolfontname','隶书'); set(gcf,'defaultuicontrolhorizontal','left');

set(gcf,'menubar','none'); %删除图形窗工具条 str='通过多行指令绘图的交互界面';

set(gcf,'name',str,'numbertitle','off'); %书写图形窗名 h_axes=axes('position',[0.05,0.15,0.45,0.70],'visible','off'); uicontrol(gcf,'Style','text',... %制作静态文本框 'position',[0.52,0.87,0.26,0.1],... 'String','绘图指令输入框');

hedit=uicontrol(gcf,'Style','edit',... %制作可编辑文本框 <19> 'position',[0.52,0.05,0.26,0.8],... % <20> 'Max',2); %取2,使Max-Min>1,而允许多行输入 <21> hpop=uicontrol(gcf,'style','popup',... %制作弹出菜单 <22> 'position',[0.8,0.73,0.18,0.12],... % <23> 'string','spring|summer|autumn|winter');%设置弹出框中选项名 <24> hlist=uicontrol(gcf,'Style','list',... %制作列表框 <25> 'position',[0.8,0.23,0.18,0.37],... % <26> 'string','Grid on|Box on|Hidden off|Axis off',...%设置列表框中选项名 <27> 'Max',2); %取2,使Max-Min>1,而允许多项选择 <28> hpush=uicontrol(gcf,'Style','push',... %制作与列表框配用的按键 <29> 'position',[0.8,0.05,0.18,0.15],'string','Apply');

set(hedit,'callback','exm1153_1(''set'')'); %编辑框输入引起回调 <31> set(hpop,'callback','exm1153_1(''set'')'); %弹出框选择引起回调 <32> set(hpush,'callback','exm1153_1(''set'')'); %按键引起的回调 <33> set(gcf,'UserData',[hedit,hpop,hlist]); %向'UserData'存放图柄 <34> case 'set' %以下是回调函数 <35> H=get(gcf,'UserData'); %从'UserData'获取图柄 <36> ct=get(H(1),'string'); %获得输入的字符串函数 <37> vpop=get(H(2),'value'); %获得选项的位置标识 <38> vlist=get(H(3),'value'); %获得选项位置向量 <39> if ~isempty(ct)

eval(ct') %运行从编辑文本框送入的指令

popstr={'spring','summer','autumn','winter'}; %弹出框色图矩阵 liststr={'grid on','box on','hidden off','axis off'};%列表框选项内容 invstr={'grid off','box off','hidden on','axis on'};%列表框的逆指令

16

colormap(eval(popstr{vpop})) %采用弹出框所选色图 vv=zeros(1,4);vv(vlist)=1; for k=1:4

if vv(k);eval(liststr{k});else eval(invstr{k});end %按列表选项影响图形 end

end % <50> end

(2)在MATLAB指令窗中运行exm1153_1就可获得题目所要求的图形用户界面(即图11.4.3.3-1无图形时的初始界面)。

【*例11.5.3-2】目标:利用M函数文件创建与例11.4.3.3-1相同的用户界面。本例演示:如何依靠 'Tag'属性 与findobj指令的配合使用获取回调操作所必须的控件图柄,保证回调动作正确执行。 本例的程序可由exm1153_1.m做如下修改而得: (1)删去exm1153_1.m的指令<34><36>。

(2)在exm1153_1.m的<20>和<21>行之间增添一行 'Tag','H_edit',...

(3)在exm1153_1.m的<23>和<24>行之间增添一行 'Tag','H_popup',...

(4)在exm1153_1.m的<27>和<28>行之间增添一行 'Tag','H_list',...

(5)把exm1153_1.m的<31><32><33>条指令中的exm1153_1改为exm1153_2。 (6)在exm1153_1.m的<35>和<37>行之间增添以下三条指令。 H(1)=findobj(gcf,'Tag','H_edit'); H(2)=findobj(gcf,'Tag','H_popup'); H(3)=findobj(gcf,'Tag','H_list'); (7)把exm1153_1.m的函数头修改为 function exm1153_2(flag)

(8)把修改后的文件“另存为”exm1153_2.m ,就完成了新文件的编写。

(9)在MATLAB指令窗中运行exm1153_2就可获得题目所要求的图形用户界面。

11.6 图形用户界面设计工具

17

图11.6-1

11.6.1 界面设计工具的结构和调用指令 11.6.1.1 界面设计工具的结构 11.6.1.2 图形窗的激活态和受控态 11.6.1.3 启动交互式编辑工具的指令 11.6.2 交互式用户界面设计工具应用示例

图11.6.2-1 待制作的用户界面

11.6.2.1 工序一:窗口初始位置和大小设计

18

【例11.6.2.1-1】本例演示:界面设计工具guide 的启动和用户界面窗口初试几何制作。

图11.6.2.1-1 属性编辑工具界面

11.6.2.2 工序二:对象的几何布局

【例11.6.2.2-1】整个用户界面的几何布局:“轴”、控件种类、相对位置及大致尺寸。本例演示:(A)设计工具控制面板上“新对象模块区”的图标的使用;(B)几何布局时不必太多考虑各对象的精细位置和大小。

图 11.6.2.2-1 “第二道工序” 构成控件布局的界面

11.6.2.3 工序三:新建对象的属性设置

【例11.6.2.3-1】控件关键属性的设置。本例演示:(A)属性编辑工具的使用。(B)当 'Callback' 属性值可用比较简单的MATLAB语句表达时,则直接填写;如果语句较多,表达复杂,那么就应采用一个待写的M函数名填写。本例中的回调都借助M函数文件实现。(C)当控件上有字符串标识时,应注意文字的对齐方式和注意字体大小,使外观上与对象大小协调。(D)控件的 'String' 属性字符串的输入格式。在这过程中,可能还要适当调整对象几何尺寸,使字符表现清晰醒目。(E) 'Units' 采用 'normalized' ,使得所有新建对象随所在图形窗按比例缩放。

11.6.2.4 工序四:用户菜单的制作

用户菜单制作工序比较独立,因此该工序可前可后,也可以与“工序一”相合并。

19

【例11.6.2.4-1】用户菜单的制作。本例演示:菜单编辑工具的使用。在本例中菜单引起的回调都是直接、简单的MATLAB语句。

图 11.6.2.4-1 用户菜单编辑器界面

11.6.2.5 工序五:新建图形对象的齐整化

【例11.6.2.5-1】控件的齐整化。本例演示:演示“对齐编辑工具”的使用。

图11.6.2.5-1

20


matlab中gui教程(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:如何练好接发球(张晓鹏)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: