|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
5 g1 I( ?6 G7 P1 p- Q0 J% k# X+ {. _文章目录
: @1 I5 s4 Y' q, ?9 f8 s5 E) V前言$ Y9 ]$ a I( J3 X
matlab数据传递概观
. Z9 ]) x! ]- ~对话框创建
- g; W7 L$ S! t) K5 g利用滑动条实现颜色调控3 K% T) F, j# \% O: h0 ?* R
利用弹出式菜单选择并输入文本框( g G' `9 ^2 I* e
利用列表框选择并输入文本框* Z5 D. t( d! Z6 d Q3 {
4 ^: ~+ D. Q+ r. x
前言7 r$ f; U5 D0 r/ `. p' A R
我觉得gui无非就是给程序加了件衣服,其实具体的程序我们都会写,我们唯一不明白的是那几个部分数据之间的传递,以及怎么获取数据处理数据。; k: a! N1 y% J( @- Q8 `
# X* C, o0 A5 r# s0 Y% @matlab数据传递概观. `/ n$ _- r- a+ `3 o; I
在GUI的各个控件之间进行数据传递,可以采用以下两种方法,利用结构体handles和控件的UserData属性。( h! z7 s, N# _. {) F y$ W& }" ~
! k; ^* H6 q4 r4 w4 f2 Y$ v结构体handles保存了GUI的数据。当在运行GUI时,M文件会自动产生结构体handles,其中保存了所有GUI对象的数据,可以看作是一个数据的容器。用户可在handles中找到所有控件的信息。handles在各各控件的callback之间传来传去。8 S# C& y% k, g
) A9 ^2 H/ ]! _! m
通过在结构体handles中新建字段并放置数据,可以实现数据在各个控件之间共享/ w! d% [1 J; [
- k/ ^0 {6 Q+ L6 a0 U
- handles.a=a;
- guidata (hobject, handles); %更新+ y9 ^$ y" G% Q9 {
) w7 w" P5 h9 ~) E$ q# i; h# V& s' X8 b% H( Z' P
在结构体handles中新建字段a,并保存变量a的值然后利用函数guidata()更新handles中的数据。则在任何需要获取该变量值的地方,可以使用如下语句:/ f# ?$ P, @0 W0 Q! P
) b; Y! `& w* j3 a. N- a=handles.a;% X4 k, k8 ? M g& h
2 B( r" X" Y1 j& J
% H2 R! \ X& ]+ [2 B9 c+ P! {. w+ Y/ S还可以采用控件的UserData属性来保存数据。每个GUI对象都有UserData属性,可以用来存储任何类型的数据。用户可以通过函数get()获取数据,通过函数set()设置数据。除此之外,还可以将变量用global设置为全局变量,从而实现数据的共享。) L1 f8 F4 d1 Z
+ `) c. z( }. `- {8 U5 f
对话框创建8 O' g% c, N5 Q" B7 K! r, ~1 S* f. q
打开GUIDE,新建一个button,然后运行找回调函数,添加如下代码( D: [5 k9 V/ a* m4 c
7 c9 V. M" Q* l4 z; D- function pushbutton1_Callback(hObject, eventdata, handles)
- choice=questdlg('你要关闭吗?','关闭对话框','Yes','No','No')%问题对话框,默认为No
- switch choice,
- case 'Yes'
- delete(handles.figure1);%关闭窗口
- return;
- case 'No'
- return;
- end" T( C$ Y% T+ r$ Q& r' ~. m
& i+ Q8 }3 l7 |8 w; q: m
/ A4 ]# Y9 ]- ^0 T- G' B& F Z
7 b: ~* e5 t2 K8 S
& S! R- c w9 n+ X5 {利用滑动条实现颜色调控
% y# m8 g8 r2 r9 y$ SSliderStep 为[0.01 0.1] :一个是小步长,是点击slider两端的箭头移动的步长;一个是大步长,是点击slider时移动的步长
/ n9 e! ~7 H+ A8 _" X- ]
) F1 e: s! K% e% N9 L- function slider1_Callback(hObject, eventdata, handles)
- val=get(hObject,'value');%通过get获取滑动条的当前值
- set(handles.text1,'BackgroundColor',[val val val]);
# D; S' Z4 l1 C4 s 6 c) C' q7 j4 R; c6 j
* }( f' z: q1 i n* F7 ~0 t效果:% ^, Z) D9 W# c# ?0 b( Y1 |; O
9 _8 t+ r2 b3 d" H, D3 U3 }+ D
, Z- f9 t/ o; o: |; T- L) e
! j7 t# _3 ?6 I7 |2 d4 z5 g+ K
' h- q% d3 \ v1 @- v) n9 ]2 K6 L1 n! P0 v5 r) T! t3 R
( {7 L) \$ |/ `8 b& ]
" y6 a+ Q- L$ o) U* z, L# _8 q# _+ T6 [) d7 T: j! V5 |% Q4 U$ T
利用弹出式菜单选择并输入文本框6 d7 f0 ]4 N% K E7 o+ |- D u9 V
& r; _2 ^' f) m- `: r2 h- 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, @: e( K6 c/ ]5 e- X7 y/ L* h) A
( N$ g( f. q1 i$ R. c3 E9 S( z8 F) R3 n O
效果:3 l; e+ D1 I% e) H1 x
5 D+ }( t" t3 o
) j8 ~& q( E* Q: {/ C7 T
( Q2 A# l: e' s. b
1 @" c2 j' o5 Q0 Y% v
- j- k% J @! K
) }" x3 c+ ^# p6 d利用列表框选择并输入文本框4 O6 }5 n5 F' e
% v! z6 J2 W/ k9 n3 X0 f
- 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;
, x$ c) l! J7 {7 _. C6 Z 2 O; Q" ^' z- H, H9 `6 o* n
3 Z8 T5 r7 f( d1 t# x
效果:% O& ^2 C9 H+ l& b
6 W8 j; z/ J( o2 k
& E5 \2 C0 u3 O/ G
' j$ e/ Z+ m4 j" z( E# P$ O2 _; V1 t. e# G# G3 v$ k
* R4 r7 r$ M; V9 |. U |
|