Matlab的GUI界面学习手记

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

1.初始化函数:
这个函数的作用是初始化,即相当于类的初始化,比如python类中的__init__函数在构造函数创建实例后自动调用。

function OpeningFcn(hObject, eventdata, handles, varargin)

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

而hObject和handles的区别就在于hObject是自己,有点像this指针。而handles提供访问全局信息的能力。
比如中hObject = handles.checkbox1;因为通过改变一个控件是需要使其他的控件作出相应,而因为是在函数中,都是局部变量,无法访问到其他控件,而可以根据这里提供的handles访问其他控件。

下面列出了一些常用的元素,当然可以自己随意改变名称:
界面中的元素
比如有pushbutton按钮,slider滑动条,radiobutton单选框,checkbox勾选框,edit输入框,popupmenu弹出窗口。

通过set命令设置,
set(ui元素名,属性型,值)
1.设置可视属性,visible属性:

%可视
set(handles.pushbutton1,'visible','on');
%不可视
set(handles.pushbutton1,'visible','off');
%使图不可见
set(gcf,'visible','off');

还可以使窗口不可见:

h = figure(Window_1);%返回Window_1窗口
set(h,'visible','on');

2.设置字符串的值,string属性:

set(handles.text,'string','原始音乐信号');

设置下拉框中各个元素的值:

set(handles.popupmenu_channel_choose,'string',['单声道';'双声道';'三声道']);

实例:
比如这里我要实现的功能是改变勾选checkbox以后显示在text1中显示文字’hello’,就可以这样写

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

3.设置元素的值:
设置勾选框为勾选状态,

set(handles.checkbox_choose_state,'value',1);

4.获取元素的值:
如获取当前下拉菜单的索引值,和具体的值:

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

5.关闭当前窗口:

close

6.作图:

axes(handles.axes1)
plot(x,y)

或是直接使用:

plot(handles.axes1,x,y);

清除坐标标签:

set(handles.axes,'xticklabel',[],'yticklabel',[]);

清除图像中的内容:
尤其是重复选择axes显示图像前要先进行清除操作,

cla(handles.axes1);

7.变量传递:
因为GUI的写法里全是函数,也就意味着都是局部变量,参数的传递比较麻烦,我想能不能利用将变量放入handles中传递,

handles.x = x;
handles.y = y;

后来发现不行,因为handles在函数中作为形参,形参不能改变实参的值。
正确的做法:

handles.x = x;
handles.y = y;
guidata(hObject, handles);

这篇文章中介绍了多种传递变量的方法:
传递变量介绍链接

总结:
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);

7.显示消息框:

msgbox('请先选择播放的乐曲','提示')

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

  • 5
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB GUI设计学习手记 第3版》是一本介绍MATLAB GUI设计的学习手册。本书主要分为几个部分,包括基础知识、常用控件、图形用户界面设计、数据处理及可视化等内容。 在基础知识部分,本书详细介绍了MATLAB GUI设计的背景知识和基本原理,包括MATLAB环境下GUI的概念、常用函数以及GUI设计的基本流程等。通过对基础知识的学习,读者可以对MATLAB GUI设计有一个整体的认识。 在常用控件部分,本书介绍了MATLAB中常用的控件的使用方法,如按钮、文本框、列表框等。对于每种控件,书中都给出了详细的示例代码和运行效果,读者可以通过实践学习掌握这些控件的使用技巧。 在图形用户界面设计部分,本书介绍了如何设计具有良好用户交互性的GUI界面,包括界面布局、颜色和字体设置、事件处理等。通过对这些方面的学习,读者可以设计出美观、易用的GUI界面。 在数据处理及可视化部分,本书介绍了如何使用MATLAB进行数据的读取、处理和可视化,包括数据操作、数据分析以及结果展示等。通过对这些内容的学习,读者可以将GUI和数据处理相结合,实现更加强大的功能。 总之,《MATLAB GUI设计学习手记 第3版》是一本对MATLAB GUI设计进行全面介绍的学习手册,适合对MATLAB GUI设计感兴趣的读者。读者可以通过学习本书,不仅学会了基本的GUI设计技巧,还可以将其应用于实际项目中,提高工作效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值