Matlab——GUI初涉

MATLAB GUI教学视频0:GUI中的基本操作—在线播放—优酷网,视频高清在线观看
http://v.youku.com/v_show/id_XMjM2Mjk0MjM2.html?firsttime=200

——————————————————————————————————————————————————————————————————————

在看完这个视频后想到一个问题

在一个按键的回调函数中实现的语句,能否放在在其他按键回调函数中一样实现?

(可以,但是注意的是,我们对某个按键进行操作的时候,实际上触发了那个按键的回调函数,所以只会运行该按键的回调函数)

这里说下GUI传递数据跟句柄的一些东西,更多的可以参看MatLab GUI 数据传递[1]

回调函数:function panel_Callback(hObject, eventdata, handles)  %以panel为例

eventdata是保留参数,可以忽略

hObject

在回调函数中需要调用自己的属性时,需要用到hObject这个参数,只需hObject.属性名(如hObject.value)  就可以了

handles

是这个GUI界面的代号。可以通过它获取这个界面的所有信息。所以在控件A自己的回调函数中,要获取或者设置别的控件的属性,就用  handles.别的控件Tag.属性

如set(handles.edit1,'string','123')

以上两个参数都是典型的结构体,大概画了下handle跟GUI的关系

在handle中定义自己的变量和引用变量

在任何地方

handles.自己的变量名 = 某些值     (其实也就是给结构体添加成员变量)
     这样你就定义了自己的变量。
     
    b=handles.自己的变量名     (结构名加点号来引用成员变量)
     就可以得到这个变量值,同样也可以修改它。
     别忘了使用
     guidata(hObject, handles);(不用改,直接黏贴)  在函数末尾来保存你对handles和hObject的操作。(不然你自定义的变量就没了)

%guidata( 视窗句柄 , 全部句柄 ),如果视窗句柄位置不是视窗句柄,而是一个控件的句柄,那么这个控件的父视窗(parent figure)会被调用。所以guidata中的视窗句柄 可以是figure的句柄,也可以是figure内所包含的控件的句柄,不管是哪种情况,最终handles会和figure相关联。全部句柄即GUI句柄handles

怎么在控件callback函数体之外获取控件和用户自己的数据

temp=get(handles.my_popup,'Value');

在其他子函数或者非figure内控件的callback内保存用户数据到guidata

在figure控件callback之内调用guidata(hObject, handles);,hObject是控件的句柄。如果在其他子函数或者非figure控件的callback知中使用guidata保存数据,hObject就不再是控件句柄,会出错。所以我们要用figure的句柄代替hObject,即handles.figure1
 
   guidata( handles.figure1 , handles);
 
在不同GUI之间传递数据

传入

  function
mygui_OpeningFcn(hObject, eventdata, handles, varargin)
                  所有的启动参数都是通过varargin传到它的OpeningFcn里面的。那启动参数可以是哪些呢?
     
    1、figure,也就是窗口参数。
         比如说position之类
         例如:打开这个GUI时,使用这个命令  mygui('Position',[434
234 234 34])则表示打开窗口在这个位置;还有哪些可控属性可以查help。
     2、自定义参数

       如果传入的参数不是figure的属性(matlab查找不到你输入的属性名),则你输入的参数作为一个向量存放在varargin里面。
       比如mygui('路人甲','80‘),那varargin{1}存放了'路人甲',varargin{2}=’80‘
       
     那mygui中对这读取两个数据进行反应,就达到了传入参数的目的。
 
  传出
      那怎么把数据传出来呢?
      将你要输出的数据存在handles.output里面
     在GUI任意地方
              handles.output=数据1;
              handles.secend_output=数据2;
     然后在GUI的outputFcn里面加上
             varaginout{1}=handles.output;
             varaginout{2}=handles.secend_output; 

——————————————————————————————————————————————————————————————————————-

MATLAB GUI教学视频2:设置GUI窗口尺寸可调—在线播放—优酷网,视频高清在线观看
http://v.youku.com/v_show/id_XMjM2Mjk3Njg0.html

——————————————————————————————————————————————————————————————————————

其实就是一个设置:Tools→GUI Opinions→Resize Behavior→Proportional .....................

——————————————————————————————————————————————————————————————————————-

MATLAB GUI教学视频3:滚动条数值显示在文本框中—在线播放—优酷网,视频高清在线观看
http://v.youku.com/v_show/id_XMjM2Mjk5NjU2.html

——————————————————————————————————————————————————————————————————————

技巧是在文本框回调程序中get滚动条的value,set文本框文字改为滚动条的value

有个疑问:滚动条数值显示在文本框中,开始时文本框无显示

——————————————————————————————————————————————————————————————————————-

MATLAB GUI教学视频4:Radio Button Check Box的基本用法—在线播放—优酷网,视频高清在线观看
http://v.youku.com/v_show/id_XMjM2MzAxNDgw.html

——————————————————————————————————————————————————————————————————————

Radio Button Check Box 两个均为单选性的控件,选中它们则它们返回的value为max(默认为1),否则为min(默认为0)

这两个控件中属性中的value是指选中与否时返回的值(相当于容器,只能是max或者min的值,假如是max值,则初始化后默认显示max值)

如在前面修改过max或者min,必须相应在这里修改

——————————————————————————————————————————————————————————————————————-

MATLAB GUI教学视频5:使用Button Group绘制不同的正弦曲线—在线播放—优酷网,视频高清在线观看
http://v.youku.com/v_show/id_XMjM2NDg5Nzky.html

——————————————————————————————————————————————————————————————————————

在Button Group中只能选中一个单选性的控件,选中某项控件,Button Group函数中对应的编程思路是

get  Button Group中的NewSelect属性的Tag(Matlab自生成的SelectionChangeFcn注释块中有说明),通过switch匹配tag进行不同操作。

  1. current_Obj=get(eventdata.NewValue,'Tag');  %得到当前被选中的radio button的Tag,赋值给current_Obj
  2. axes(handles.axes1)
  3. switch current_Obj   %判断哪一个radio button被选中
  1. <span style="white-space:pre">  </span>case......
  1. <span style="white-space:pre">  </span>case.....

——————————————————————————————————————————————————————————————————————

MATLAB GUI教学视频6:下拉菜单Pop-Up Menu的基本用法—在线播放—优酷网,视频高清在线观看
http://v.youku.com/v_show/id_XMjM2OTUyNDEy.html
——————————————————————————————————————————————————————————————————————

——————————————————————————————————————————————————————————————————————

MATLAB GUI教学视频7:ListBox的基本用法—在线播放—优酷网,视频高清在线观看
http://v.youku.com/v_show/id_XMjM3NTIxODIw.html
——————————————————————————————————————————————————————————————————————

以上的两个视频其实都是跟Button Group思路是一样的,通过控件返回的某项属性值来判断选中的项目

  1. var=get(handles.kj1,'value');

——————————————————————————————————————————————————————————————————————-

MATLAB GUI教学视频8:选择参数绘制曲线—在线播放—优酷网,视频高清在线观看

http://v.youku.com/v_show/id_XMjM3NjU1ODMy.html

——————————————————————————————————————————————————————————————————————

在之前的基础上再增加绘图的功能,@知识点@是:

  1. handles.y=y;
  2. guidata(hObject,handles)

1——guihandles(figure1)可以得到一个结构体包含了figure1的所有控件的TAG 及其句柄,

2——比如说你想在一个控件中构造一个变量,并且希望能在其它控件中使用,这时候你可以通过下面的方法
handles.abc=*******(abc是你随便取的一个名字,其实就相当于每一个控件的TAG名,而这个变量会储存在handles结构之中)
guidata(hObject,handles) % 保存和更新handles结构体 [2]

—————————————————————————————————————————————————————————————————

MATLAB GUI教学视频9:菜单控件menu的基本用法—在线播放—优酷网,视频高清在线观看
http://v.youku.com/v_show/id_XMjQzMTUzODQ4.html

——————————————————————————————————————————————————————————————————————

这一节主要是在了解GUI的操作(Menu editor),@知识点@是

1——在实现弹出右击菜单功能时,需要先建立一个坐标系,然后在坐标系属性中的UIContxetMenus中选中你在ContxetMenus中创建的选项名

2——如果不先建立坐标系,也可以实现绘图的功能,相当于把figure中的图原样搬到当前GUI中,设置坐标系可以限定绘图区域,虽然绘图地方小了,但是还是会按比例输出图形

3——ContxetMenus中的功能:

选上:Check mark this item 效果如下

(照片来自http://blog.sina.cn/dpool/blog/s/blog_4b1fba1901018pbx.html

选上Separator above this item 效果就像红色圈的那样

—————————————————————————————————————————————————————————————————

[1]MatLab GUI 数据传递 - lwjaiyjk3的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/yujiak/article/details/8944877

[2]guidata,handles的理解(转)
http://www.douban.com/note/152943531/

Matlab——GUI初涉的更多相关文章

  1. matlab GUI界面编程总结

    去年做了一些关于Matlab GUI的程序,现在又要做相关的东西,回想起来,当时很多经验没有记录下来,现在回顾起来始终觉得不爽,所以从现在开始,一定要勤写记录. 从简单的例子说起吧. 创建Matlab ...

  2. 转载:关于Matlab GUI的一些经验总结

    去年做了一些关于Matlab GUI的程序,现在又要做相关的东西,回想起来,当时很多经验没有记录下来,现在回顾起来始终觉得不爽,所以从现在开始,一定要勤写记录. 从简单的例子说起吧. 创建Matlab ...

  3. Matlab GUI设计中的一些常用函数

    Matlab GUI常用函数总结 % — 文件的打开.读取和关闭% — 文件的保存% — 创建一个进度条% — 在名为display的axes显示图像,然后关闭% — 把数字转化为时间格式% — ch ...

  4. Matlab GUI界面

    做SVD的时候,看学姐的demo,用到了matlab的GUI,感兴趣就自己学了一下: 从简单的例子说起吧. 创建Matlab GUI界面通常有两种方式: 1,使用 .m 文件直接动态添加控件     ...

  5. matlab GUI保存axes(坐标轴)上的图像

    1.默认方式 matlab GUI默认菜单的保存图像默认为保持全部GUI,包括使用" 菜单->编辑->复制图形". 2 保存可见区域 2.1 代码 [FileName, ...

  6. [学习一个] Matlab GUI 学习笔记 Ⅰ

    Matlab GUI 学习笔记 Ⅰ 1. Foreword Matlab 是严格意义上的编程语言吗?曾经有人告诉我他是通过 Matlab 学会了面对对象编程,我是不信的,但这依然不妨碍它在特殊领域的强 ...

  7. Matlab GUI memo

    有一段时间没写博客,一周4篇文章都坚持不下来,不知道写哪个方面的内容,写研究相关就怕论文查重查到,其他方面也没太多时间去学.还是花时间多学点其他方面.废话到此,很早就做过matlab gui相关,现在 ...

  8. Matlab GUI读入图片

    % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, han ...

  9. 如何用MATLAB GUI创建图形用户界面

    MATLAB是众多理工科学生及工程师经常使用的一款数学软件,除了可以实现数据处理,矩阵运算.函数绘制等功能外,MATLAB还可以实现图形用户界面的设计. 下面介绍如何让小白也能用GUI创建最基本的用户 ...

随机推荐

  1. 【贪心算法】POJ-1328 区间问题

    一.题目 Description Assume the coasting is an infinite straight line. Land is in one side of coasting, ...

  2. 1003 我要通过!| PAT (Basic Level) Practice

    1003 我要通过! (20 分) "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件 ...

  3. Think In Java读书笔记:内部类覆盖及其初始化

    本文相关章节:第十章 内部类 10.10 内部类可以被覆盖吗 在读至本节第二个范例代码时(及下方的代码),我对输出结果中的第一个“Egg.Yolk()”很不理解,为什么它会第一个地方输出. 我起初认为 ...

  4. Beta阶段DAY5

    一.提供当天站立式会议照片一张 二.每个人的工作 1.讨论项目每个成员的昨天进展 刘阳航:改进UI,美化界面. 林庭亦:优化代码结构 郑子熙:改进UI,美化界面. 陈文俊:优化代码结构 2.讨论项目每 ...

  5. 第九周(11.11-11.17)----Beta版本发布140字评论

    1.新蜂组: 俄罗斯方块:项目有良好的用户界面,在原版的基础上可以对用户分数进行排序,增加了显示下一个方块的功能.是个很有趣的小游戏. 2.天天向上组: 连连看:完成了基本功能,增加了消除时和鼠标点击 ...

  6. 简单 dp

    1.摆花问题 题目描述小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆.通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号.为了在门口展出更多种花,规定第i种花不能超过a ...

  7. 自己用过的web软件tools软件以及玩过的游戏

    三年大学世界 最经常用的web网站估计就是淘宝了   最经常使用的工具软件也就是   Microsoft office,而最经常玩的游戏就是英雄联盟了一款pvp对战游戏 淘宝自不必说 可以称为国内最大 ...

  8. Spring Boot 推荐的 Java 配置

    在学 Spring 的过程中 , 配置文件慢慢的被注解所替代 , 现在 Spring Boot 更是推荐使用 Java 配置完全来代替配置文件 . 需要使用到的注解有 : Bean 相关 : @Con ...

  9. jquery datatables 添加跳转到指定页功能

    项目中使用了jquery datatables 作为我们的数据表格组件,但是分页上没有跳转到指定页,需要自己重新写.解决方法如下: 在设置dataTables的默认属性里设置它的drawCallbac ...

  10. .net对Redis集群的调用(FrameWork版本4.0)

    使用 StackExchange.Redis 实现.net对Redis集群的调用,方法如下: 1.打开 项目-管理NuGet程序包 2.在打开界面搜索StackExchange.Redis,找到Sta ...