文章目录
- 前言
- matlab数据传递概观
- 对话框创建
- 利用滑动条实现颜色调控
- 利用弹出式菜单选择并输入文本框
- 利用列表框选择并输入文本框
前言
我觉得gui无非就是给程序加了件衣服,其实具体的程序我们都会写,我们唯一不明白的是那几个部分数据之间的传递,以及怎么获取数据处理数据。
matlab数据传递概观
在GUI的各个控件之间进行数据传递,可以采用以下两种方法,利用结构体handles和控件的UserData属性。
结构体handles保存了GUI的数据。当在运行GUI时,M文件会自动产生结构体handles,其中保存了所有GUI对象的数据,可以看作是一个数据的容器。用户可在handles中找到所有控件的信息。handles在各各控件的callback之间传来传去。
通过在结构体handles中新建字段并放置数据,可以实现数据在各个控件之间共享
handles.a=a;
guidata (hobject, handles); %更新
在结构体handles中新建字段a,并保存变量a的值然后利用函数guidata()更新handles中的数据。则在任何需要获取该变量值的地方,可以使用如下语句:
a=handles.a;
还可以采用控件的UserData属性来保存数据。每个GUI对象都有UserData属性,可以用来存储任何类型的数据。用户可以通过函数get()获取数据,通过函数set()设置数据。除此之外,还可以将变量用global设置为全局变量,从而实现数据的共享。
对话框创建
打开GUIDE,新建一个button,然后运行找回调函数,添加如下代码
function pushbutton1_Callback(hObject, eventdata, handles)
choice=questdlg('你要关闭吗?','关闭对话框','Yes','No','No')%问题对话框,默认为No
switch choice,case 'Yes'delete(handles.figure1);%关闭窗口return;case 'No'return;
end
利用滑动条实现颜色调控
SliderStep 为[0.01 0.1] :一个是小步长,是点击slider两端的箭头移动的步长;一个是大步长,是点击slider时移动的步长
function slider1_Callback(hObject, eventdata, handles)
val=get(hObject,'value');%通过get获取滑动条的当前值
set(handles.text1,'BackgroundColor',[val val val]);
效果:
利用弹出式菜单选择并输入文本框
function popupmenu1_Callback(hObject, eventdata, handles)
val=get(hObject,'value');%获取数值,从上到下依次1到4
str=get(hObject,'String');%获取字符串,这里是菜单所有的字符串,相当于存到了字符串数组里
switch valcase 1set(handles.edit1,'String','');%输入到可编辑文本里case 2set(handles.edit1,'String',str{2});case 3set(handles.edit1,'String',str{3});case 4set(handles.edit1,'String',str{4});
end
效果:
利用列表框选择并输入文本框
function listbox1_Callback(hObject, eventdata, handles)
sel=get(gcf,'selectiontype');
if strcmp(sel,'open')%如果双击鼠标str=get(hObject,'String');%获取字符串n=get(hObject,'value');%获取数值set(handles.edit1,'string',str{n});%在静态文本中显示
end;
效果: