第8章 MATLAB图形用户界面设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
与下拉式菜单一样,选中创建的某个Context Menu菜单,菜单编辑器的右边就会显示该 菜单的有关属性,可以在这里设置、修改 菜单的属性。 菜单编辑器左上角的第四个与第五个按钮 用于对选中的菜单进行左移与右移,第六 与第七个按钮用于对选中的菜单进行上移 与下移,最右边的按钮用于删除选中的菜 单 注:如果将窗口对象的Menubar属性设置为 “figure”则有系统默认的8个原始菜单
•8.2.3 对话框对象
对话框对象包括: 错误提示对话框:errordlg('s1', 'name') 帮助提示对话框:helpdlg('s1', 'name') 信息提示对话框:messagebox('s1', 'name') S1为对话框内的字符串,name为对话框标题 [例8-3] 生成标题为“基本信息”、提示内容 为“这里给出的是基本信息”的错误提示对 话框 %例8-3 errordlg('这里给出的是基本信息','基本信息');
• 编写回调函数,经常使用三个函数命令: findobj,set和get • findobj用于找出图形对象内具有某一标签属 性的具体对象,格式为 • H=findobj(图形对象句柄,属性,属性值) • H为返回句柄,图形对象句柄可以是: • gcbf(获得具有返回控制的当前图形句柄) • gcbo(获得具有返回控制的当前对象句柄) • gco (获得当前对象句柄) • gcf (获得当前图形句柄) • gca (获得当前坐标轴对象句柄)之一
[例8-4] 在例8-1的基础上,在适当位置创建 名一个“基础长度”的静态文本框
• • • • %例8-4 clear; h=figure; set(h,'Position',[100 150 500 400],'Menubar','figure',... • 'Name','可视化编程','NumberTitle','off') • h1=uicontrol(h,'Style','text','Position',[100 150 80 20],'String','基础长度');
第8章
8.1 8.2
MATLAB图形用户界面设计
图形用户界面创建与组成 图形用户界面编程基础
8.3
图形用户界面编程实例
• 8.1 图形用户界面创建与组成 • 图形用户界面(GUI)主要包括窗口、 菜单、对话框等图形元素 • 图形用户界面设计包括: • 1、可视化设计 • 2、程序设计
• 8.1 图形用户界面创建与组成 • 8.1.1 创建图形用户界面(GUI) • 创建的方法: • (1)File→New→GUI
• (7) 文件编辑器(M-file Editor):可 利用该工具进行有关m文件的编辑,对 应的回调函数(callback)是图形对象 被选中时执行的一段代码(可通过鼠标 右键调出M-file Editor) (8) 激活按钮(Run):用于图形执行 • (9) 组件面板(Component Pallete): 表8-1(P155)给出了组件面板上各个 组件的含义
• function popupmenu1_Callback(hObject, eventdata, handles) • val=get(hobjedt,'Value') • str=get(hobject,'String'); • switch str{val} • case 'peaks' • handles.current_data=handles.peaks; • case 'membrane' • handles.current_data=handles.membrane; • case 'sinc' • handles.current_data=handles.sinc; • end • guidata(hobject,handles)
图形用户界面由下述几部分组成:
(1) 布局区域(Layout Area):在窗口 内创建、安排各种图形对象。 (2) 菜单编辑器(Menu Editor):创建、 设计、修改下拉式菜单和快捷菜单(上 下文菜单) (3) 对象属性查看器(Property Inspector):可查看每个对象的属性值, 也可修改设置对象的属性值
• • • • %例8-1 clear; h=figure; set(h,'Position',[200 300 600 400],'Menubar','figure','Name','可视化编程 ','NumberTitle','off')
• 8.2.2 菜单对象
1 菜单对象属性的可视化设计 菜单编辑器的左下角有两个按钮,选择第一个 按钮,可以创建下拉式菜单。选择第二个按 钮,可以创建快捷(上下文)菜单。菜单编 辑器左上角的第一个按钮用于创建下拉式菜 单一级菜单项。第二个按钮用于创建一级菜 单的子菜单,第三个按钮创建Context Menu 主菜单。在选中已经创建的Context Menu主 菜单后,可以单击第二个按钮创建选中的 Context Menu主菜单的子菜单
例8-6 利用GUI设计工具设计如下图的图形 用户界面。该界面包括一个用于显示图形的 轴对象,显示的图形包括表面图、网格图或 等高线图。绘制图形的功能通过3个命令按钮 来实现,用户通过单击相应的按钮,即可绘 制相应图形。绘制图形所需要的数据通过一 个弹出框来选取。在弹出框中包括3个选项, 分别对应MATLAB的数据函数peaks、membrane 和用户自定义的绘图数据sinc,用户可以通 过选择相应的选项来载入相应的绘图数据。 在图形窗口缺省的菜单条上添加一个菜单项 Select,Select下又有两个子菜单项Yellow 和Red,选中Yellow项时,图形窗口将变成黄 色,选中Red项时,图形窗口将变成红色。
• function pushbutton1_Callback(hObject, eventdata, handles) • mesh(handles.current_data)
• function pushbutton2_Callback(hObject, eventdata, handles) • surf(handles.current_data)
标题栏(Name):窗口标题栏对应的字符串 菜单(Menubar):Figure是选择系统默认菜 单;None为不选用系统默认菜单 颜色(Color):可通过属性检查器设置窗口 的颜色 Resize属性:设置窗口大小是否可调整: on(默认选项)为可调整;off为不可调整 Visible属性:设置窗口是否可见:on(默认 选项)为可见;off为不可见
2 窗口对象属性的程序设计 设置方法:set(对象句柄,属性1,属性值1, 属性2,属性值2,…) 获取方法:get(对象句柄,属性1,属性值1, 属性2,属性值2,…) [例8-1]试在位置[200,300,600,400]创建含 有系统默认菜单,显示标题“可视化编程” 但不显示窗口编号的图形窗口
2 菜单对象属性的程序设计 设置方法:uimenu(窗口句柄,属性1, 属性值1,属性2,属性值2,…) 如果窗口句柄是当前图形窗口(gcf),则 “窗口句柄”一项可省略 [例8-2] 在例8-1的基础上,创建名为 “输入一般资料”的菜单,同时创建 其下级菜单“输入基础资料”
• • • •
%例8-2 clear; h=figure; set(h,'Position',[100 150 500 400],'Menubar','figure',... • 'Name','可视化编程','NumberTitle','off') • h1=uimenu(h,'Label','输入一般资料'); • h11=uimenu(h1,'Label','输入基础资料 ','Callback','aaa1.m');
• (2)在命令窗口输入 guide
• 8.1.2 图形用户界面(GUI)介绍
• 在MATLAB主窗口中,选择File菜单中的New 菜单项,再选择其中的GUI命令,就会显示 图形用户界面的设计模板。 MATLAB为GUI设计一共准备了4种模板,分别 是: • Blank GUI(默认) • GUI with Uicontrols(带控件对象) • GUI with Axes and Menu(带坐标轴与菜单) • Modal Question Dialog(带模式问话对话框)
• 8.2 图形用户界面编程基础 • MATLAB中,图形用户界面编程主要包括的 对象是:窗口对象、菜单对象、对话框对 象、控件对象和坐标轴对象 • 8.2.1 窗口对象 1 窗口对象属性的可视化设计 窗口对象的基本属性包括以下几个: 位置(Position):窗口左下角及右上角的 横坐标与纵坐标 窗口编号(Number Title):on(默认选项) 显示窗口编号;off不显示窗口编号
• 8.2.4 控件对象
1 控件对象属性的可视化设计 可在控件面板上选择表8-1所示的各种控 件,选中后鼠标成为十字形,直接在布 局区域内进行布置。可通过属性检查器 修改其属性(最重要的是callback函数 的编辑) 各控件的常用属性值见表8-2(P159)
2.控件对象属性的程序设计
MATLAB提供了用于建立控件对象的函数 uicontrol,其调用格式为: 对象句柄=uicontrol(图形窗口句柄,属 性名1,属性值1,属性名2,属性值2,…) 其中各个属性名及可取的值和前面介绍的 uimenu函数相似
[例8-5] 在例8-1的基础上,在适当位置创建名一个 坐标轴对象并在该坐标系内作出函数y=sin(x)的 图形
• • • • • • • • • %例8-5 clear; h=figure; set(h,'Position',[100 150 500 400],'Menubar','figure',... 'Name','可视化编程','NumberTitle','off') axes('position',[0.1 0.7 0.8 0.2]) x=0:0.01:2*pi; y=sin(x); plot(x,y);
• (4) 对象对齐工具(Align Object):可利用 该工具左右、上下对多个对象的位置进行调 整(Ctrl键选择多个对象) (5) 对象浏览器(Object Browser):可观察 当前设计阶段的各个句柄图形对象(可通过 鼠标右键调出Object Browser ) (6) 切换顺序编辑器(Tab Order Editor): 通过该工具,设置当用户按下键盘上的Tab键 时,对象被选中的先后顺序。
• 8.2.6 图形用户界面编程过程
• 图形用户界面编程可采用可视化编程方式或 代码直接编程方式或者两者的结合使用 图形用户界面的可视化编程包括以下过程 (1)进入GUI(图形用户界面) (2)添加图形对象 (3)修改菜单属性 (4)修改图形对象属性 (5)编写回调函数或命令 (6)另存为图形文件 (7)打开图形文件,对有关对象属性进行修改
• function ex8_7_OpeningFcn(hObject, eventdata, handles, varargin) • handles.peaks=peaks(35); • handles.membrane=membrane(5); • [x,y]=meshgrid(-8:0.5:8); • r=sqrt(x.^2+y.^2); • sinc=sin(r)./(r+eps); • handles.sinc=sinc; • handles.current_data=handles.peaks;
• 8.2.5 坐标轴对象
1 坐标轴对象属性的可视化设计 可在控件面板上选择表8-1所示的坐标轴 控件,选中后鼠标成为十字形,直接在 布局区域内进行布置。可通过属性检查 器修改其属性 坐标轴的常用属性值见表8-3(P160)
2.坐标轴对象属性的程序设计
设置方法: axes(图形窗口句柄,属性名1,属性值1, 属性名2,属性值2,…) 其中各个属性名及可取的值和前面介绍的 uimenu函数相似