MATLAB GUI一点点体会

1.我应该在哪里加我的代码?     
      MATLAB自动为你做的工作:对控件执行默认操作时,matlab自动执行按钮的callback下的代码。
      比如按钮,就是单击按钮一下。所以对于编程的新人来说,只用在相应函数下,添加自己期望执行的操作代码就可以了。比如说希望鼠标在控件上单击时执行某写代码,那将代码添加在ButtonDownFcn下就好。希望在控件销毁(比如说某窗口)时,执行一些代码,那可以把代码添加在DeleteFcn下面(常见的,“真的要退出吗”之类)。控件是否支持 “单击”,“鼠标划过”“鼠标松开”等等,可以去help查看它的Fcn有哪些。
-------------------------
      在控件上右键 选择view callbacks 就可以看见它所支持的常用的回调函数callbacks。需要对什么进行反应,直接点进去,添加自己的代码就可以了。
--------------------------
     通俗来说,都是,我怎么样一下(点一下按钮),他就怎么样一下(执行特定计算,显示一个图,跳出一个另一个界面)。再附加一些容错处理(比如说跳出一个对话框)。
即:对特定操作进行特定反应;
一个例子就是,我把slider滑块拖动,则某一个static text显示滑块的值;
要进行的特定反应是:static text显示滑块的值;----->写一句相应代码 set(handles.mystatic,'String','要显示的值')
进行的操作是: 对滑块进行拖动  ----- 所以---->把这句代码放在滑块的callback函数下
2、怎么获得和设置控件的属性
     通俗的说,就是我怎么知道编辑框里的是什么,滑块现在的位置,或者pop up里选择了哪一个选项。
     而且,我怎么控制 static text显示我要求的信息
控件的属性当然远不止我刚刚说的,
设置:
     set(handles.你控件的tag,'要设置的属性名','要设置的属性值')
获取:
    get(handles.你控件的tag,'要获取的属性名')
help里可以看到所有可能有用的属性
MATLAB->Creating Graphical User Interfaces->Laying Out GUIs and Setting Properties->What Properties Do I Need to Set?
3. 数据怎么在不同的控件之间传递
     知道了GUI的数据管理规则,这个就很简单了。
-------------------   
先看在一个界面内部的数据传递  
     每一个function myc_Callback(hObject, eventdata, handles)中所传进来的参数(也就是你可以在这个callback代码中直接用这个参数)都是一样的
     第一个参数是hObject,是跟这个callback所关联的控件的handles,它的名字(Tag)叫hObject。不用管那么麻烦的概念,只用知道,控件自己的回调函数调用自己的属性,只用hObject.属性名  就可以了(中间一点)。
      第二个参数是MATLAB的保留参数
     第三个handles,是这个GUI界面的handles,它里面存放了这个界面的所有信息。所以在控件自己的回调函数中,要用别的控件的属性,就用  handles.别的控件Tag.属性  或者 handles.别的控件tag
    handles格式是一个存放数据的缸。控件的handles是小缸,它的名字叫做hObject;GUI界面的handle是一个大缸,并且这个缸名字也叫做handles;大缸里存放了所有的小缸和所有用户数据,你只需 handles.控件A的tag  就可以存取控件A的信息。
     那我怎么把自己计算出或者别的什么数据放到这个缸里呢?
     ^_^ 在任何地方   handles.自己的变量名 = 某些值
     这样你就定义了自己的变量,在任何地方 b=handles.自己的变量名 就可以得到这个变量值,同样也可以修改它。
     别忘了使用
     guidata(hObject, handles);(不用改,直接黏贴)  在函数末尾来保存你对handles和hObject的操作。(不然你自定义的变量就没了)
-----------------------
      在不同GUI之间传递数据
      那就来看Open一个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;
这样就把数据传出来了。
看每一个GUI的最外层的那句
     function varargout = mygui(varargin)     看输入输出,就是这样了。把GUI本身就是一个函数,
        b=mygui(一些传入的参数)   就执行GUI并返回结果

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值