|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
& c. t4 ~3 p2 m+ C4 K
文章目录
: h8 ?( F: b- t/ a& m' O# Y" F前言
/ v7 V. i# _6 ]: i) kmatlab数据传递概观* U W6 ^* b1 `3 m. H6 ^# H5 c
对话框创建
* t" a* H7 H7 g; k利用滑动条实现颜色调控! }( c/ x& T7 P! o- h& A, ^
利用弹出式菜单选择并输入文本框3 V! i A' e! ]( V) B/ o3 ~, g& `
利用列表框选择并输入文本框
# v3 e0 C: h6 b2 E
. t" i, O/ v- q- t0 n前言
) K7 r& t) R: j我觉得gui无非就是给程序加了件衣服,其实具体的程序我们都会写,我们唯一不明白的是那几个部分数据之间的传递,以及怎么获取数据处理数据。
+ b! g- B9 n+ d
4 N2 V9 J7 b* m1 C9 ?2 \* I, v gmatlab数据传递概观
3 j; f( p8 n2 B9 C. `8 q/ C在GUI的各个控件之间进行数据传递,可以采用以下两种方法,利用结构体handles和控件的UserData属性。6 _) M5 a: V0 n% W2 X$ ~
$ } Z" i! l) L结构体handles保存了GUI的数据。当在运行GUI时,M文件会自动产生结构体handles,其中保存了所有GUI对象的数据,可以看作是一个数据的容器。用户可在handles中找到所有控件的信息。handles在各各控件的callback之间传来传去。
& e2 T5 w5 S6 v0 y& f( ~
& R- J. j9 K+ m7 ^8 A( b! \4 V通过在结构体handles中新建字段并放置数据,可以实现数据在各个控件之间共享
8 j$ |7 w* e1 U" z
* F& b4 J7 ~3 M0 T- handles.a=a;
- guidata (hobject, handles); %更新
0 ~' [" p9 ]7 m) X( \
% e( l/ D. Z7 F# ~! Q- K- j
& [. _6 \* I; l6 _$ U) t: {在结构体handles中新建字段a,并保存变量a的值然后利用函数guidata()更新handles中的数据。则在任何需要获取该变量值的地方,可以使用如下语句:6 h0 o! `1 l- @$ s4 |. W
2 {! R. d8 g9 N
- a=handles.a;5 v1 Z; F$ U2 x7 l( G/ f
; ^+ x8 V% {3 d. \& f3 A. @: Q& s
2 b7 J1 I' y- L1 b V4 C _2 {还可以采用控件的UserData属性来保存数据。每个GUI对象都有UserData属性,可以用来存储任何类型的数据。用户可以通过函数get()获取数据,通过函数set()设置数据。除此之外,还可以将变量用global设置为全局变量,从而实现数据的共享。6 K9 M( f4 h3 r* K7 u9 t
. Y# g& u: c: i0 }
对话框创建( c" n" |! H6 u2 F0 O/ @
打开GUIDE,新建一个button,然后运行找回调函数,添加如下代码
7 Q- ?9 x7 T) h2 | {1 D, x! @
% D* q% c2 \3 D+ ^8 | j1 B- function pushbutton1_Callback(hObject, eventdata, handles)
- choice=questdlg('你要关闭吗?','关闭对话框','Yes','No','No')%问题对话框,默认为No
- switch choice,
- case 'Yes'
- delete(handles.figure1);%关闭窗口
- return;
- case 'No'
- return;
- end
# e v+ W/ D( q5 C0 O% I6 I 9 [( I: H5 [1 d* W) s- F* A j
! c: Y4 o* w8 T7 I; b9 k0 ~/ a
& y0 p" d) k; s6 z3 {, b' K9 g6 |$ i# I+ l4 }# w; p/ d
利用滑动条实现颜色调控
: m% [) K4 `, R+ KSliderStep 为[0.01 0.1] :一个是小步长,是点击slider两端的箭头移动的步长;一个是大步长,是点击slider时移动的步长- u4 m; ? u. h. s+ `" \
& X6 l- D2 j/ m
- function slider1_Callback(hObject, eventdata, handles)
- val=get(hObject,'value');%通过get获取滑动条的当前值
- set(handles.text1,'BackgroundColor',[val val val]);
- P3 h7 H9 W2 |7 I
* e% N1 W; U8 k2 B# F l
V, a4 p! l) i, M; D效果:9 V' k6 u$ k& F- C7 F/ L
$ L4 D0 S3 A; e8 F0 M5 B, o5 O$ N
7 J% X4 ?6 M6 K1 U" [/ A& {6 @5 f4 T s( Y$ X9 h: n4 Y: r5 T
o1 a. f8 i0 G5 Y& V0 h7 F
. ~4 t( \3 b( ?1 P
% ~( m5 r$ ?! ?9 Q" r4 ]! f* \
$ K7 ?3 V) K' C d/ s) z8 b& Y7 z U" o. i6 _8 |* A
利用弹出式菜单选择并输入文本框5 A+ D$ d1 l, i6 R! A. |6 J! r6 \
7 t4 [4 d3 u8 j- Z
- 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});
- end9 H! r7 H/ l; R% `% P5 `3 i& ~
. i! |! F' k2 ^$ D' b. Z5 v- C3 J& @9 u" z) o+ W6 z" F B% _
效果:
+ t: N5 R) M$ @* d: r6 }. D$ m
% h9 n: b2 h# M" y0 _% \8 `) |
4 g% n3 B: g" z# [" \( S5 u) L, a+ N( \4 f* p7 [' ~; X
: U# k- W8 @7 W: @2 k! A* G* m* F7 i+ H2 M3 {4 j% E& u5 L. Y
* E+ `/ M! F* e$ ]' |
利用列表框选择并输入文本框* Z6 T! o; w6 a( ]
) T3 p) g& u& ]3 u3 b+ B
- 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;# p8 Y( j# K$ z+ b3 ^% H
9 i2 ~+ e1 R1 w' v& [( W+ Y, g
+ C3 s- S/ R1 [4 _, P% I9 W" R3 H效果:
. l7 ]5 M, u. a1 Y0 I& [+ _ \( f
7 q* S, P/ g* B# j& t' g1 ?: J& Z
2 y4 }7 \: A. c, ]5 N
! X0 y( I* ]# g) i( T- C! |% R) n2 B! e) F1 }% Y2 F. O
|
|