MATLAB GUI之ABC
GUIDE
属性设置
name 更改名字
logo
在GUI的“.m”文件中的OpeningFcn函数或者OutputFcn函数中添加以下代码:
% 设置页面左上角的 LogoI = imread( 'Logo.jpg' ); % Logo.jpg为指定的图标javaImage = im2java( I );newIcon = javax.swing.ImageIcon( javaImage );figFrame = get( handles.figure1, 'JavaFrame' ); % 取得Figure的JavaFramefigFrame.setFigureIcon( newIcon ); % 修改图标
本问题参考了网址:https://blog.csdn.net/hycwoaiyl/article/details/80113594
————————————————
版权声明:本文为CSDN博主「Daniel__Shi」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/shitao99/article/details/85955726
全局变量
“在函数或基本工作空间中,用global声明的变量为全局变量。”
“声明了全局变量的函数或基本工作空间,共享该全局变量,都可以给它赋值。”
“如果函数的子函数也要使用全局变量,也必须用global声明。”
“全局变量要放在函数开始处声明。”
在gui显示图像的toolbar
set( hObject, 'toolbar', 'figure' ); % 在菜单栏显示figure工具条的内容
GUI放到屏幕中央
需要选择其中一种代码,将其放置在GUI界面的XXX_OpeningFcn()函数下即可。 推荐使用前三种实现,简洁实用。
movegui( handles.figure1, 'center' ) % figure1为当前GUI界面的Tag
movegui( gcf, 'center' ); % 将GUI界面放置在桌面中央
movegui( hObject, 'center' ); % 将GUI界面放置在桌面中央
GUI的M文件
在MATLAB GUI中,数据分两种:GUI data和application data。 两种数据的存取机制是相同的,但是GUI data使用起来比较方便。
每一个GUI 图形界面都维持一个和自己的界面的图形(figure)相联系的一个handles数据结构,这个数据结构中容纳图形界面内所有控件(按钮、列表框、编辑框等)的句柄,相当于一个大的“容器”,里面存放了figure内所有控件的句柄。同时,handles结构也可以被figure内所有控件的回调函数访问,因为回调函数的输入参数中都有handles结构。此外,在控件的回调函数内可以把数据存储到handles结构中。
handles结构数据的取得和存储是通过guidata函数来实现的。
例如:在编辑框edi的回调函数内想获得t编辑框的句柄,hObject可以,也可以用handles.edit,这两个值是一样的,没有区别,只不过获得控件句柄的方式不同而已:hObject是调用回调函数时直接传过来的,handles.edit是从handles结构中取得的。但是,在控件的CreateFcn函数中如果想访问控件,必须用hObject,而不能用handles.edit,因为这时控件还没被创建,其句柄还没有加入到handles结构中。
各控件的回调函数中,hObject的值是不一样的,分别代表调用回调函数的控件的句柄,而handles结构却是一样的。这种机制便于figure内的不同控件的回调函数内传递数据。
Opening函数框架
GUI 文件执行函数的顺序是:
Opening函数−>Output函数−>回调函数Opening函数−>Output函数−>回调函数
并且,Opening 函数 、 Output 函数只执行在开始运行时执行一次。
若要根据用户的要求,输出到命令行,可以使用暂停和就行函数:uiwait,uiresumeuiwait,uiresume
具体如下
(1)添加 uiwait 到 Opening 函数中(如上,uiwait(handles.figure1);)
(2)在期望相应的回调函数中,更新 handles.output 值,并执行 uiresume。
回调函数
hObject, 当前 figure 句柄
eventdata, 附加参数,一般用不到
handles,当前 GUI 句柄,包含所有 GUI 对象的信息
- 利用函数 get 来取得句柄中的数据值,利用 set 来改变句柄中数据的值,并利用global 在不同的控件中共享数据。
- 设置:set(handles.控件的tag,'要设置的属性名','要设置的属性值')。比如:set(handles.edit1,'string','hello world');
- 获取:get(handles.控件的tag,'要获取的属性名')