您的位置:首页 > 编程语言 > MATLAB

Matlab的GUI界面学习手记

2020-07-19 04:58 821 查看

最近在用Matlab的guide来写GUI界面,就记录一些我对GUI界面的理解。
首先是函数中都有的那些参数hObject,eventdata和handles,其中eventdata我用的2017b的Matlab的官方注释是将在未来版本中定义。
这个就先不管。

先看hObject和handles。
他们的作用很相似,hObject和handles的官方解释是句柄,一直没有很搞懂,现在终于明白了一些。
我的理解是GUI界面中的元素就是句柄,或者更加通俗一些的解释,把handle当成C++或是Java中的类类型,而handles就是类的名称,要调用类中的元素就要用到handles。
下面列出了一些常用的元素,当然可以自己随意改变名称:

比如有pushbutton按钮,slider滑动条,radiobutton单选框,checkbox勾选框,edit输入框,popupmenu弹出窗口。
举个实例,
比如这里我要实现的功能是改变勾选checkbox以后显示在text1中显示文字’hello’,就可以这样写

function checkbox1_Callback(hObject, eventdata, handles)
set(handles.text1,'string','Hello','FontSize',18)

而hObject和handles的区别就在于hObject是自己,有点像this指针。
比如上一例子中hObject = handles.checkbox1。
也举个例子,获取当前下拉菜单的索引值,和具体的值:

function popupmenu1_Callback(hObject, eventdata, handles)
sel = get(hObject,'string');%获取下拉菜单当前选项的索引值
choose = get(hObject,'value');%获得索引值
sel{choose}%存储的时候是cell格式,这样才能取得正确的值

总结:
1.要使用handles一般是改变其他元素,交互式的,比如点某一个按键,显示图片。
2.而hObject则是自身元素。

而每一个元素又有很多的属性,我的理解是C++中的结构体或是另一个类,这个类中也有很多属性,一般是公有的属性,
比如我目前用到的有’value’索引值,'visible’可视化,'BackgroundColor’背景颜色,'string’值。

还有其他一些小内容:gcf = figure(‘当前图像’)
1.切换图像:原理是隐藏当前图像,打开要打开的图像的句柄

set(gcf,'visible','off');
h = figure(新图像);
set(h,'visible','on');

2.运行命令:
要运行的程序为fun.m

run('fun')

3.要同一个界面上画多幅图像:

axes(handles.axes1)
画图命令(不加figure或是subplot命令)
axes(handles.axes2)
画图命令

4.改变下拉菜单中的内容:

set(handles.popupmenu1,'string',{'A','B'})

5.显示Latex公式,目前我只知道text命令支持:

hAxes = axes('units','normalized','position',[0,0,1,1],'visible','off');%作用是划分figure区域为[0 0 1 1]
text(0.17,0.85,['$','\omega_{R}(n)=R_{N}(n)','$'],'interpreter','latex','fontsize',18);

6.实时显示时间

T=timer('tag','timer1','BusyMode','queue','ExecutionMode','fixedrate','period',1,'timerfcn',{@t_update,handles});
start(T);
function t_update(obj,event,handles)%显示时间要定时刷新
xingqi={'日','一','二','三','四','五','六'}; %星期字符串
set(handles.text2, 'String',[datestr(clock, 31) '  星期' xingqi{weekday(now)}],'FontSize',15);

推荐一本学习Matlab的UI设计的好书,MATLAB GUI设计学习手记 这里可以下载源码源码下载可以学习到很多。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: