matlab GUI 设计 自学笔记

版权声明:所有内容仅供大家学习与复习使用,请勿用于任何商业用途 https://blog.csdn.net/qq_40828914/article/details/83714245

图形用户界面(Graphical User Interface,GUI):

用户与计算机进行信息交流的窗口。

设计图形用户界面的方法
调用建立用户界面控件的函数
使用MATLAB提供的GUIDE工具进行可视化设计

控件对象及其操作

(1)常用控件
输入和输出类控件:编辑框、静态文本、列表框、滑动条等。
实施确认、选择操作类控件:按钮、双位按钮、单选按钮、复选框等
(2)建立控件对象
函数uicontrol用于建立控件对象,其调用格式为:

句柄变量=uicontrol(图形窗口句柄,属性1,属性值1,属性2,属性值2,…)

其中,属性及其取值决定了控件的特征。若省略图形窗口句柄,默认
当前图形窗口建立控件对象。

(3) 控件对象的基本控制属性
Style属性:定义控件对象的类型,例如‘pushbutton’表示按钮对 象,'edit’表示编辑框,等等。
String属性:定义控件对象的说明文字。
Tag属性:标识控件对象。
Enable属性:控制控件对象是否可用。
Position属性:定义控件对象的位置,其取值形式为[x,y,w,h]。
Callback属性:其属性值是描述命令的字符串或函数句柄,当选中控 件时,系统将自动执行字符串描述的命令或调用句柄所代表的函数, 实施相关操作。
(4)回调函数
回调函数定义对象怎样处理信息并响应某事件。
回调函数的定义格式:
function 函数名(source, eventdata) …… end
其中,参数source是发生事件的源控件对象句柄,eventdata存储事件数据。
(5)例子1
例1 在图形窗口中建立三个按钮对象,当单击按钮时分别绘制正弦曲 线、显示或隐藏坐标轴的网格、清除坐标轴的图形。

  ha= axes('Units','pixels','Position',[40,40,360,360]);   
ptgrid=uicontrol('Style','pushbutton',...
     'String','网格', 'Position', [450,120,48,20],...
    'Callback','grid' );
btncla = uicontrol('Style', 'pushbutton', ...
    'String', '清除','Position', [450,80,48,20],...
    'Callback','cla' );    
btnplot = uicontrol('Style', 'pushbutton', ...
     'String','绘图','Position', [450,160,48,20]); 
%设置“绘图”按钮的Callback属性值是plot_sin函数句柄。
btnplot.Callback=@plot_sin;

%新建回调函数文件plot_sin.m
function plot_sin(source, callbackdata)
    t=-pi:pi/20:pi;
    plot(t,sin(t));
end

菜单对象

(1)建立菜单对象
uimenu函数用于创建、设置、修改菜单。
建立一级菜单项的函数调用格式为:
一级菜单项句柄=uimenu(图形窗口句柄,属性,属性值1,属性2,属性值2,…)
建立子菜单项的函数调用格式为:
子菜单项句柄=uimenu(上级菜单项句柄,属性1,属性值1,属性2,属性值2,…)

(2)菜单属性
Label属性:定义菜单项的名字。
Accelerator属性:定义菜单项的快捷键。
Checked属性:指示菜单项是否已选中。
Enable属性:控制菜单项的可选择性。
Separator属性:在菜单项上方添加一条分隔线。

(3)例子2
在例1的界面中添加“图形选项”菜单项,其中包括一个二级菜 单项“线型”,其下又有3个子菜单项,分别为“实线”、“虚线”、 “双划线”。

首先运行例1的程序生成图形界面,再 运行例2程序,在界面中添加“图形选 项”菜单项,这时“线型”菜单项不 可用,单击“绘图”按钮绘制正弦函 数曲线后“线型”菜单项变为可用, 这时可以改变线型,例如双划线.

新建一个m文件第一次运行他
ha= axes('Units','pixels','Position',[40,40,360,360]);   
ptgrid=uicontrol('Style','pushbutton',...
     'String','网格', 'Position', [450,120,48,20],...
    'Callback','grid' );
btncla = uicontrol('Style', 'pushbutton', ...
    'String', '清除','Position', [450,80,48,20],...
    'Callback','cla' );    
btnplot = uicontrol('Style', 'pushbutton', ...
     'String','绘图','Position', [450,160,48,20]); 
%设置“绘图”按钮的Callback属性值是plot_sin函数句柄。
btnplot.Callback=@plot_sin;

新建一个m文件第二次运行他
hopt=uimenu(gcf,'Label','图形选项','Accelerator','L');
hLStyle=uimenu(hopt,'Label','线型','Tag','LStyle', 'Enable','off');
hL_Solid=uimenu(hLStyle,'Label','实线',...
    'Tag','Solid','Callback', @MLine_Type);
hL_Dotted=uimenu(hLStyle,'Label','虚线',...
    'Tag','Dotted','Callback', @MLine_Type);
hL_Dashed=uimenu(hLStyle,'Label','双划线',...
    'Tag','Dashed','Callback', @MLine_Type);

新建回调函数文件MLine_Type.m
function MLine_Type(source,callbackdata)
    hline=findobj('Type','line');
    if strcmp(source.Tag,'Solid' )==1
        hline.LineStyle='-';
    elseif strcmp(source.Tag,'Dotted' )==1
        hline.LineStyle=':';  
    elseif strcmp(source.Tag,'Dashed' )==1
        hline.LineStyle='--';   
    end
end

修改回调函数文件plot_sin.m
function plot_sin(source, callbackdata)
    t=-pi:pi/20:pi;
    plot(t,sin(t));
    h1=findobj('Tag','LStyle');
    h1.Enable='On';    %使得 “线型”菜单项可用
end

本人觉得一些常用的函数

gcf返回当前Figure对象的句柄值

h = findobj(‘PropertyName’,PropertyValue,…)
返回所有属性名为‘PropertyName’,属性值为’PropertyValue’的图形对象的句柄。可以指定多个属性/值对

在当前坐标下查找所有直线对象:
h = findobj(gca,‘Type’,‘line’)  %gca为当前坐标的句柄

matlab自带用户界面设计工具GUIDE

GUIDE:Graphical User Interface Development Environment

图形界面设计窗口

(1)打开GUIDE
在MATLAB命令行窗口输入guide命令。
在MATLAB主窗口中选择“主页”选项卡,单击工具栏的“新建”命令按
钮,再选择“应用程序”下的GUIDE命令

(2)图形用户界面设计模板
Blank GUI (Default)
GUI with Uicontrols
GUI with Axes and Menu
Modal Question Dialog

(3)图形用户界面设计窗口
图形用户界面设计窗口由菜单栏、 工具栏、组件选项板、界面设计区、状 态栏等部分组成。

(4)图形用户界面设计工具
对齐对象工具
菜单编辑器
Tab键顺序编辑器
工具栏编辑器
代码编辑器
对象属性检查器
对象浏览器

对象属性检查器是用于检查/修改对象属性的工具。

菜单编辑器
菜单编辑器构成
工具栏
菜单列表
菜单属性面板
图形窗口的MenuBar属性
figure
none
菜单编辑器 添加自定义菜单
新建菜单 新建菜单项 设置菜单项属性

对象浏览器
对象浏览器用于查看图形对象和展示界面的组织架构

回调属性与回调函数
(1)回调属性
Callback属性:按钮类控件和菜单项的单击事件的默认回调属性。
CreateFcn属性:定义创建图形对象的响应。
DeleteFcn属性:定义取消图形对象的响应。
ButtonDownFcn属性:定义单击鼠标键按下的响应。
KeyPressFcn属性:定义键盘键按下的响应。
SelectionChangeFcn属性:定义改变选项的响应

(2)回调函数框架
function 对象标识_Callback(hObject, eventdata, handles)
其中,hObject为发生事件的源控件,eventdata为事件数据,handles保
存图形界面中所有对象的句柄。

%“绘图”按钮的Callback函数
function pushbutton1_Callback(hObject, eventdata, handles)
A=eval(handles.editfz.String);
f=eval(handles.editpl.String)/50;
theta=eval(handles.editxj.String)/180*pi;
x=linspace(0,2*pi,60);
if handles.OpSin.Value==1
    y=A*sin(f*x+theta);
else
    y=A*cos(f*x+theta);
end
plot(x,y);
handles.PStyle.Enable='On';



%“实线”菜单项的回调函数
function Solid_Callback(hObject, eventdata, handles)
hline=findobj('Type','line');
hline.LineStyle='-';
handles.Solid.Checked='On';
handles.Dotted.Checked='Off';
handles.Dashed.Checked='Off';



%“红”菜单项的回调函数
function r_Callback(hObject, eventdata, handles)
hline=findobj('Type','line');
hline.Color='r';
handles.r.Checked='On';
handles.g.Checked='Off';
handles.b.Checked='Off';

猜你喜欢

转载自blog.csdn.net/qq_40828914/article/details/83714245