matlab guide对话框+滑动条+弹出式菜单+列表框的使用

版权声明:所有内容仅供大家学习与复习使用,请勿用于任何商业用途 https://blog.csdn.net/qq_40828914/article/details/84580628

前言

我觉得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 val
    case 1
        set(handles.edit1,'String','');%输入到可编辑文本里
    case 2
        set(handles.edit1,'String',str{2});
    case 3
        set(handles.edit1,'String',str{3});
    case 4
        set(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;

效果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_40828914/article/details/84580628