matlab - GUI设计中常用控件格式(2)

2019-08-31 13:38

第八章 结论

通俗的说,就是我怎么获取编辑框里的字符,滑块现在的位置,pop up里被选中的选项,如何控制 static text显示我要求的信息 控件的属性当然远不止我刚刚说的。 在你需要的地方插入以下代码:

设置:

set(handles.你控件的tag,'要设置的属性名','要设置的属性值') 获取:

get(handles.你控件的tag,'要获取的属性名')

比如:set(handles.edit1,'string','hello world'); help里可以看到所有可能有用的属性

MATLAB->Creating Graphical User Interfaces->Laying Out GUIs and Setting Properties->What Properties Do I Need to Set?

4. 数据怎么在不同的控件之间传递

4. 数据怎么在不同的控件之间传递

知道了GUI的数据管理规则,这个就很简单了。 -------------------

先看在一个GUI界面内部的传递的数据 每一个控件的回调函数头:

function myc_Callback(hObject, eventdata, handles)

第一个参数是hObject,是跟这个callback所关联的控件的handles,在它自己的callback下,可以用代号-> hObject 来调用它。。不用管那么麻烦的概念,只用知道,控件自己的回调函数调用自己的属性,只用hObject.属性名 就可以了(中间一点)。 第二个参数是MATLAB的保留参数

6

黄宇永整理

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

------------------------------

handles hObject 都是结构体。正常的编程概念。

handles格式是一个存放数据的缸。控件的handles是小缸,它的名字叫做hObject;GUI界面的handle是一个大缸,并且这个缸名字也叫做handles;大缸里存放了所有的小缸和所有用户数据,你只需 handles.控件A的tag 就可以存取控件A的信息。 那我怎么把自己计算出或者别的什么数据放到这个缸里呢? ^_^ 在任何地方

handles.自己的变量名 = 某些值 (其实也就是给结构体添加成员变量) 这样你就定义了自己的变量。 在任何地方

b=handles.自己的变量名 (结构名加点号来引用成员变量) 就可以得到这个变量值,同样也可以修改它。 别忘了使用

guidata(hObject, handles);(不用改,直接黏贴) 在函数末尾来保存你对handles和hObject的操作。(不然你自定义的变量就没了) -----------------------

5、在不同GUI之间传递数据

5、在不同GUI之间传递数据

-----------这部分是以前写的我发现我的理解有些问题---所以我现在传递数据用的application data的方法,没用这个-。可能还没理解透output的函数作用------------------------ 传入

那就来看打开一个GUI界面时,传给他的参数有哪些。

7

第八章 结论

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并返回结果

8

黄宇永整理

则b就得到了传出来的结果。

---------------------------------------------------------------------------------;

Button Groups

Button Groups function .......

switch get(hObject,'Tag'); %注意这里的hObject和别的不同,并不是指这个BUtton Group,而是指在组里面,被选中的那个控件 case 'radio button1' %按钮1的tag %。。。。。 case '按钮2的tag' %。。。。。。。。 end ----------

附:所以在这里,如果要拿到button groups本身的话,就用handles.它的tag名 中间一个点。

不好意思,纠错Toggle Button部分。

function hold_toggle_callback(obj,eventdata,h_axes) button_state=get(obj,'value'); if button_state==get(obj,'Max') set(h_axes,'NextPlot','add'); set(obj,'String','Hold on'); elseif button_state==get(obj,'Min') set(h_axes,'NextPlot','replace'); set(obj,'String','Hold off');

end

呵呵是比较运算不是赋值运算,可能是打字打漏了,但是还是要指出的嘛。 在不同的GUI之间传递数据的部分不是很清楚

在不同GUI之间传递数据的这个方法,但是运行好几次都存在问题。不明白原因是什么,提示出错的内容是:Attempt to reference field of non_strcukture array.请问怎么改正呢?

另外,请问你说的“传递数据用的application data的方法”是什么呢?怎么用的呢?谢谢啦!!!

---------------------------------------------------------------------------------------------------------------------------

想问一下我有个\开始\按钮,按一下就运行程序,按钮变成“暂停”,功能上应该是按一下,程序能暂停,然后按钮变成“恢复”。可是暂停后并不能顺利变到恢复 % Callback for Pause button: (Pauses the demo) function pause_button_callback(obj, eventdata) text = get(obj, 'String');

% If the simulation were running: if strcmp(text, '暂停') == 1

9

第八章 结论

set(obj, 'String', '恢复'); % pause it:

waitforbuttonpress; set(obj, 'String', '暂停'); else

% otherwise, \ set(obj, 'String', '暂停'); end; return;

---------------------------------------------------------------------------------------------------------------------------

我想用GUI实现一个翻页的功能,进入一个新的界面,我现在使用的代码是 close(gcf);

run('NextPage2');

但是在从第一个窗口切换到另一个窗口的时候看上去很不自然,明显是一个窗口被关掉,过半秒后再开启另外一个,请问如何能像我们在安装软件过程中进入下一步那样,直接进入,不知道我这么问大家看明白了嘛?谢谢,急用!

10


matlab - GUI设计中常用控件格式(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中国汽车车轮市场发展研究及投资前景报告(目录) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: