|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
- R4 \- b/ `3 v
文章目录
- Y$ v% }0 _* A0 c, U前言& {$ k+ w' `2 V$ T2 Q& }# K% T6 _
matlab数据传递概观! U M8 F4 c3 Q: {2 P/ Q
对话框创建
. x) _" G; X" r0 B; ^" V利用滑动条实现颜色调控
8 F/ ?6 A P2 Y1 u3 D利用弹出式菜单选择并输入文本框
5 r% T+ Z- @* i利用列表框选择并输入文本框
4 x4 o- l6 w4 m4 h% r% t1 q1 F+ z- \/ W1 N/ o
前言
7 B( _2 z7 E6 ~2 q/ s我觉得gui无非就是给程序加了件衣服,其实具体的程序我们都会写,我们唯一不明白的是那几个部分数据之间的传递,以及怎么获取数据处理数据。5 H2 I$ n7 D" p3 w% h4 u
0 Z% ]/ e: P1 ^5 w$ b" V* H
matlab数据传递概观( Z7 B" Y6 P" Q; P
在GUI的各个控件之间进行数据传递,可以采用以下两种方法,利用结构体handles和控件的UserData属性。
) y3 c5 s" T& T2 E4 R9 Z. @/ N/ {; U8 F
结构体handles保存了GUI的数据。当在运行GUI时,M文件会自动产生结构体handles,其中保存了所有GUI对象的数据,可以看作是一个数据的容器。用户可在handles中找到所有控件的信息。handles在各各控件的callback之间传来传去。# y1 B- N# T; y+ k. u
+ P& Z" m& u* Q$ _
通过在结构体handles中新建字段并放置数据,可以实现数据在各个控件之间共享
: W: J, D+ u/ M5 b+ \: I& `5 q Q D/ y0 @, l# e
- handles.a=a;
- guidata (hobject, handles); %更新
) D2 L: S; g1 z - R6 f4 ]; j. }
B, k; g2 I( a$ V/ l# z在结构体handles中新建字段a,并保存变量a的值然后利用函数guidata()更新handles中的数据。则在任何需要获取该变量值的地方,可以使用如下语句:
! h: U$ s& s9 I+ |# B9 h6 g0 a
$ ]! O! E' ^& d6 _- a=handles.a;
' E" a& ^/ y" Y* y0 ~
Z7 {. `' S. p& a
( E# r3 e+ H% c- g还可以采用控件的UserData属性来保存数据。每个GUI对象都有UserData属性,可以用来存储任何类型的数据。用户可以通过函数get()获取数据,通过函数set()设置数据。除此之外,还可以将变量用global设置为全局变量,从而实现数据的共享。
+ ?1 f C9 u1 a0 Z/ j+ @
2 p/ j& X. y- A j; o( O; G4 G1 C6 ~$ S对话框创建 n. _0 v+ A9 ]+ w
打开GUIDE,新建一个button,然后运行找回调函数,添加如下代码% K3 f, O% j- J+ k
) Q7 X: Y' ~; h a. [9 [" I- function pushbutton1_Callback(hObject, eventdata, handles)
- choice=questdlg('你要关闭吗?','关闭对话框','Yes','No','No')%问题对话框,默认为No
- switch choice,
- case 'Yes'
- delete(handles.figure1);%关闭窗口
- return;
- case 'No'
- return;
- end
5 F1 n6 }. w8 N
- a0 {) C7 H: O& ~2 Q& ]1 q, x
. U5 p Z, v1 p' [- E0 l- o
* a, V. B7 ]' S+ g1 j9 E5 _) g& c X4 _6 \3 e% s2 b* M) ~- m
利用滑动条实现颜色调控
. u- l0 ^; V* v+ d8 f) {3 xSliderStep 为[0.01 0.1] :一个是小步长,是点击slider两端的箭头移动的步长;一个是大步长,是点击slider时移动的步长; _! Z8 M- j' @' y1 S; e$ N, W2 X
8 e/ k. U/ ^& g) W
- function slider1_Callback(hObject, eventdata, handles)
- val=get(hObject,'value');%通过get获取滑动条的当前值
- set(handles.text1,'BackgroundColor',[val val val]);2 I+ o. ?4 o0 n/ U3 v
5 G6 u) t' }2 d9 H$ n$ `$ P# J1 e6 s/ R4 M+ q5 L
效果:
8 y4 W' }% g4 V1 Y: h
% e; z+ R3 f& ]' H6 |8 a
! J. k- @3 B4 [/ w0 s5 I1 O& j% l$ s
- T8 s: ]% g* `) U3 [
4 Y/ U2 R1 z, l
* ^* d1 q" }6 {& b. }
x$ D% f, m# f v
6 A8 V& k2 ?, ?* g8 `
) d( C {0 v0 U" m利用弹出式菜单选择并输入文本框
5 \& p8 A+ e8 _, O8 C' \4 j ]$ c' t
- 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( m4 _, ~# A$ }% k" V
( b3 H1 M3 S* V+ L% a/ T8 X5 {9 X; e7 s
效果:; G$ e6 E8 X% B
) O( h7 C3 s4 R H
8 k/ S* y2 c D; g. ?! I, _* Q$ r- i. }! L0 A/ `; _+ C! ^3 n0 P3 M
% e- f% |1 Q" o, L) c2 D2 V8 r$ n, D7 z6 o& `% m5 Q
3 a( \$ V) m5 }" s
利用列表框选择并输入文本框4 y) M6 v* C6 P+ `9 Y( m& W
# b1 _9 I; e7 [
- 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;+ k( `: t8 Y& l/ f, D
3 O1 B% R7 o( W5 R0 Y! m
0 d! v" P% T. q7 L" G' x
效果:
+ i0 F& w' D0 j( g y
* E" O* H7 d \$ ?/ b
4 u& Z# X3 o$ L0 Y, w8 J/ c3 ^& j1 I' `
4 O x5 X8 T! C4 j+ _; c9 b. `/ q7 j
0 S; I6 Q9 a: U7 X" a, s5 | x$ ]
|
|