|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
5 u" z9 j& K/ R! a
文章目录2 ]- P8 [' ^* [; S4 R A
前言5 s! h" ^8 S1 r1 Z" S5 m
matlab数据传递概观
" u/ G2 Y# ~( e0 b对话框创建
0 `% J; U: o$ c% h" ~& ^利用滑动条实现颜色调控% i; |* ^$ k3 O H* T8 o: X- `; u9 f
利用弹出式菜单选择并输入文本框, p+ k8 r0 v8 g' v8 e
利用列表框选择并输入文本框
, q a. m% T9 J9 C; V* ~
9 W# e# {$ J0 C( U, {: T* E6 K前言5 R( K4 T7 J! [* g8 F+ J7 c h
我觉得gui无非就是给程序加了件衣服,其实具体的程序我们都会写,我们唯一不明白的是那几个部分数据之间的传递,以及怎么获取数据处理数据。
! O1 J6 s2 T! a7 f( E) F, W7 c/ J% J+ M" Z8 |
matlab数据传递概观
/ i6 R8 {: F" p5 L: A' z在GUI的各个控件之间进行数据传递,可以采用以下两种方法,利用结构体handles和控件的UserData属性。
x. B0 o1 n2 p& Q1 f. K% B* ]* G& m# \; G4 E/ i2 t- z* j m' m
结构体handles保存了GUI的数据。当在运行GUI时,M文件会自动产生结构体handles,其中保存了所有GUI对象的数据,可以看作是一个数据的容器。用户可在handles中找到所有控件的信息。handles在各各控件的callback之间传来传去。4 J. [$ T3 X2 W+ K6 ?
3 ]3 _: V6 O" k, u通过在结构体handles中新建字段并放置数据,可以实现数据在各个控件之间共享
! }) P% d5 a. p& P
5 M. Y7 @" U1 k' l% e O* ^- handles.a=a;
- guidata (hobject, handles); %更新: H. Z! D3 [, Q$ {4 I# q. O
, E1 l9 `6 s* j' S. F
9 d9 t' W0 o7 Y& ^8 c在结构体handles中新建字段a,并保存变量a的值然后利用函数guidata()更新handles中的数据。则在任何需要获取该变量值的地方,可以使用如下语句:. I3 k+ W7 A d3 S" x1 j
5 N4 [6 k ]$ k" W; S, g* L
- a=handles.a;4 s& u6 O) p! m4 R
* N: G5 k1 ?( i. v$ d* Z
, r2 w" z' s) c; e还可以采用控件的UserData属性来保存数据。每个GUI对象都有UserData属性,可以用来存储任何类型的数据。用户可以通过函数get()获取数据,通过函数set()设置数据。除此之外,还可以将变量用global设置为全局变量,从而实现数据的共享。
4 z9 J% |7 i1 c7 G) r3 G6 ]* }; C
) z" t( u) X5 B1 T) d' y对话框创建
' t7 j- h' z4 P! T' W' |6 g$ n打开GUIDE,新建一个button,然后运行找回调函数,添加如下代码
7 b( N1 t$ d( T( m8 N8 j
2 S' c ?& V; e8 |- function pushbutton1_Callback(hObject, eventdata, handles)
- choice=questdlg('你要关闭吗?','关闭对话框','Yes','No','No')%问题对话框,默认为No
- switch choice,
- case 'Yes'
- delete(handles.figure1);%关闭窗口
- return;
- case 'No'
- return;
- end
; L7 E6 D9 N' B) ^ ( K) c- N6 O: x1 c
/ s0 C4 `1 r( j0 x0 k; c3 S3 m
. K4 p: o6 V2 H: F: l9 M
/ Q e( H8 F& F, W: a3 G
利用滑动条实现颜色调控
8 L' u& }! u$ Z! @/ P8 u. wSliderStep 为[0.01 0.1] :一个是小步长,是点击slider两端的箭头移动的步长;一个是大步长,是点击slider时移动的步长
) v& s! k% m, u
, D6 _4 s2 G8 w4 @, f: |) O- function slider1_Callback(hObject, eventdata, handles)
- val=get(hObject,'value');%通过get获取滑动条的当前值
- set(handles.text1,'BackgroundColor',[val val val]);1 N( \/ w# `. |, E; a+ P' ~% X
+ d9 i0 v- @- J" ]* I5 V/ I
$ m4 p; X# T$ w) X$ P效果:4 ~! ^) j& p2 T6 B
; w1 _$ D$ t- [8 I. b9 x$ D! `/ Y/ v
! g4 Y, M1 i4 I& `! e
% @$ D8 _) u& b: l g6 Z
j. c; H5 I2 J' k. W3 n. S# u: C3 R8 Q2 `$ Z. }! i( |: B! k
" A8 X5 I. Y2 ^" Z5 b$ ]/ {( |. J, x
! D; f2 l8 Z$ T4 m8 F9 t+ t
利用弹出式菜单选择并输入文本框/ b* D: m5 ^2 V' { B
G# M. f. c1 l; D# ^7 _: B# X) i! 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/ h9 s) @8 t" i; x# f* c8 X o
e& M1 p( H. t! ]" ?; V2 g1 A% v: A- a9 i
效果:* L. G' z2 Q4 ^! d6 y9 S
3 ]. a& P- A$ s2 e& y2 t5 ]6 _
; ]5 a' i+ J' \3 r( A ~' F. N" f' b0 ]$ i4 q* o; r! S: D
2 G) q7 C& j) _7 b* G5 K
1 Y) }0 P9 g$ [: b' ~- m; C7 u" b3 l i1 |8 s/ @$ f: V4 r
利用列表框选择并输入文本框
+ J; X- Q' f8 v! M+ Y
# B8 L9 t& f. ~; W9 g: k- 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;: z6 E+ Y( q( T5 h W8 I6 _9 c
! X9 |5 D5 L- s' ^: L: b3 ?9 X# Z3 Q- s6 b& R& u$ z
效果:
* `* S+ F% t0 Y+ M
2 n$ _6 M/ X) i% R( T+ u3 W
5 a/ q3 j% c% \3 p* C8 Z; V- u+ k- ]+ J) @4 _! ?1 Q
9 |( v+ o5 j& W& E- l
6 e5 A& M5 q$ J- {; N, j; \1 d8 H |
|