matlab GUI 设计 自学笔记

图形用户界面(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' )==1hline.LineStyle='-';elseif strcmp(source.Tag,'Dotted' )==1hline.LineStyle=':';  elseif strcmp(source.Tag,'Dashed' )==1hline.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==1y=A*sin(f*x+theta);
elsey=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';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

grub shell 错误_各种情况GRUB损坏进不了系统的解决方案

1.在磁盘分区表变动之后,比如删除了grub.cfg所在分区的前一个分区,导致分区号前移一位时,开机显示 grub rescue> 。处理方法:(假设原来grub.cfg在/dev/sda4,而现在变成了/dev/sda3)ls(查看分区)ls (hd0,7)/boot/(查…

linux 系统盘无法ls,linux – ls:阅读目录.:输入/输出错误

当我尝试在已安装的硬盘上使用“ls”时,我的系统引发了I / O错误.我在用hadoophbase1:/hddata$uname -aLinux hbase1 3.8.0-29-generic #42~precise1-Ubuntu SMP Wed Aug 14 16:19:23 UTC 2013 x86_64 x86_64 x86_64 GNU/Linuxhadoophbase1:/hddata$dfFilesystem 1K-blocks Use…

matlab guide对话框+滑动条+弹出式菜单+列表框的使用

文章目录前言matlab数据传递概观对话框创建利用滑动条实现颜色调控利用弹出式菜单选择并输入文本框利用列表框选择并输入文本框前言 我觉得gui无非就是给程序加了件衣服,其实具体的程序我们都会写,我们唯一不明白的是那几个部分数据之间的传递&#xff…

流放之路材质过滤怎么设置_松下除湿机怎么样 松下除湿机款式有哪些型号【详解】...

马上南方就要进入梅雨季节了,潮湿的天气容易滋生细菌,可能会导致人们出现过敏现象,所以很多家庭都选择购买除湿机,现在市场上的除湿机不是很多,其中松下的除湿机比较受欢迎,所以小编我就来跟大家说一说松下…

matlab图形句柄+图形对象+图形对象的属性+对象操作

文章目录前言:图形对象:图形句柄:图形对象的属性:对象的基本操作figure对象(图形窗口)figure()函数:clf()函数清空当前图形窗口:axes坐标轴对象image()line()text()前言: 下面这些是为了更好地…

linux用户开放crontab权限,linux – / etc / crontab权限

/ etc / crontab文件具有以下权限:-rw-R – R–我知道这个文件是用于系统cron作业的,其他用户不应该有权修改它.当前权限允许所有用户读取对文件的访问权限,使他们能够查看内容.是否有必要让所有用户都能读取/ etc / crontab?我相信所有用户都不应该知道…

echart 高度 不用 不撑满_注意厨房台面高度及细节 装出省心舒服 装出事半功倍...

厨房的装修设计最好还是细节做得好,细节做得能达到事半功倍的效果,厨房台面高度如何设计才是最合适呢?我们一起走进包头装修网了解一下吧!下面三个台面的设计细节,也许就能让你家的厨房突然变得好用起来——哪怕你可能…

利用matlab guide制作简易计算器

前言: 当然了这个太简单了,新手可以借鉴一下,举一反三的话还可以添加一些功能或者简洁一些。比如下拉框啊之类的 而且呢,这个你弄明白了,所有运算有关的,输入输出有关的,都大致相同。 实现过程…

linux复制目录命令夹,linux复制目录(文件夹)和打包命令

linux复制目录(文件夹)和打包命令复制目录命令: cp 需要复制的目录 -r 目的目录 (注意带参数-r)压缩文件:zip -r 压缩后文件名 需要压缩的目录喎?http://www.Bkjia.com/kf/ware/vc/" target"_blank" class"keylink">vcD4KP…

c#怎么拟合函数得到参数_吴恩达老师课程笔记系列第32节 -正则化之代价函数(2)...

第32节 -正则化之代价函数(2)参考视频: 7 - 2 - Cost Function (10 min).mkv 上面的回归问题中如果我们的模型是:我们可以从之前的事例中看出,正是那些高次项导致了过拟合的产生,所以如果我们能让这些高次项的系数接近于 0 的话,我…

Matlab guide菜单+快捷菜单的使用

菜单选择: Opening函数: openingFcn执行于窗口可见之前,这个时候你想做什么的话可以把代码写进去 function plott_OpeningFcn(hObject, eventdata, handles, varargin) t1/200:1/200:1; plot(t,sin(2*pi*t*10),r);几个回调函数: …

linux include 编译,linux-如何使用OpenSSL include编译.c文件?

linux-如何使用OpenSSL include编译.c文件?我正在尝试编译一个包含以下内容的小.c文件:#include #include #include #include 在我拥有.c文件的同一文件夹中,我拥有带有所有这些文件(以及更多文件)的/ openssl,也在突触包管理器中…

c向文件中插入数据_如何把数据写入顺序文件中,VBA代码中Write#语句的利用

大家好,我们今日继续讲解VBA代码解决方案的第132讲内容:使用 Write #语句把数据写入打开顺序文件中。在上一讲的内容中我们讲了打开一文本文件来写入数据的两种方法有:Append或Output,那么问题来了,如何往打开的文件中…

JavaScript变量声明+数据类型+数字格式+操作符+进制

文章目录1.那些高大上的概念术语都是指什么什么是web应用?什么是前台后台?怎么做网页界面呢?JavaScript可以应用到什么上面?2.JavaScript实例:3.语言基础变量声明数据类型基本数据类型:引用数据类型&#x…

linux查看帮助文档的命令,Linux如何使用查看一个命令的帮助文档呢?

摘要:下文讲述Linux操作系统中查看命令的帮助文档的方法分享,如下所示;实现思路:使用 --help命令即可查看命令自带的帮助文档信息例:查看ls命令的帮助信息[rootlocalhost test]# ls --helpUsage: ls [OPTION]... [FILE]...List information about the FI…

python如何更改entry属性_如何在Python3中更改Gtk3 Entry文本颜色?

我在我的应用程序中有一个Gtk.Entry()列表,我想改变其中一些文本的颜色.我尝试了以下方法:#!/usr/bin/python3# Filename: mywindow.pyfrom gi.repository import Gtkfrom gi.repository import Gdkclass MyWindow(Gtk.Window):def __init__(self):Gtk.Window.__ini…

linux 磁盘簇,linux系统exec簇工作原理

操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割。计算机的硬件,含有外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的发动机。但是…

JavaScript 函数定义+内置函数使用+array对象+object类型

文章目录函数定义random()setInterval()setTimeout()数组对象object函数定义 两种格式: function 自定义函数名称(参数1,参数2,...,参数n){ //函数体 return 返回值; }函数表达式写法(匿名函数)&#xff…

jmeter进程和线程的区别_一文搞懂进程和线程的区别

计算机系统是由硬件和软件组成的,它们共同协作以运行应用程序。先来看下面这张一个典型的计算机系统的硬件组成图从上图中看出一个系统由 CPU、ALU(算术逻辑单元)、PC(程序计数器)、总线(贯穿整个系统的一组电子管道)、IO设备、主存等组成。这些硬件的管理都是由操作…

linux中split函数用法,Linux csplit 命令用法详解-Linux命令大全(手册)

csplitLinux csplit命令用于分割文件。将文件依照指定的范本样式予以切割后,分别保存成名称为xx00,xx01,xx02…的文件。若给予的文件名称为”-“,则csplit指令会从标准输入设备读取数据。语法csplit [-kqsz][-b][-f][-n][--help][--version][文件][范本样…