|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
% U5 D2 }0 y3 B# I- ~文章目录
% h1 E$ o& f3 z1 f- D前言7 ]1 L3 h2 `1 b- ^
matlab数据传递概观
" T; u9 C6 {9 e0 `. ~( c: ^9 G对话框创建
( X* ~% `& c5 _% b" G# @' I$ ^利用滑动条实现颜色调控+ L. _$ {7 u6 Z5 r& r* G: n% Z
利用弹出式菜单选择并输入文本框
4 ^, z* t& A- Z/ F) ]& `3 K* r利用列表框选择并输入文本框
3 \. {. E, E8 q$ }1 ]
" T6 ~& d! W2 u9 v7 g前言
: W- z/ t; w8 J/ p- {我觉得gui无非就是给程序加了件衣服,其实具体的程序我们都会写,我们唯一不明白的是那几个部分数据之间的传递,以及怎么获取数据处理数据。4 |7 P) n: N4 J% J! P* T3 Q
5 R$ e! N( K8 }8 |matlab数据传递概观( Q9 l6 B+ i: @5 L/ l4 y
在GUI的各个控件之间进行数据传递,可以采用以下两种方法,利用结构体handles和控件的UserData属性。
* h7 y: r0 ` a4 w6 ?! K
% y X! c' e1 N& r结构体handles保存了GUI的数据。当在运行GUI时,M文件会自动产生结构体handles,其中保存了所有GUI对象的数据,可以看作是一个数据的容器。用户可在handles中找到所有控件的信息。handles在各各控件的callback之间传来传去。
8 h7 I0 {% Z( V7 r, |/ {7 O) _& Z) {7 A& Y& d4 C
通过在结构体handles中新建字段并放置数据,可以实现数据在各个控件之间共享
/ R" n* `% f+ C/ s2 A" r7 ?3 e# Z% D3 I$ Y
- handles.a=a;
- guidata (hobject, handles); %更新
, r" A$ b9 q- N( e" y, ^! W. [# Q
& d9 a+ @, i d/ v' ~ |. G+ h8 @9 C: p" a
在结构体handles中新建字段a,并保存变量a的值然后利用函数guidata()更新handles中的数据。则在任何需要获取该变量值的地方,可以使用如下语句:7 }1 F% n& O0 b3 s! V
1 M. s" H6 Q1 ~0 R; G+ H; r* |
- a=handles.a;4 }- W* Z+ @! e# x/ V5 ~
; B% P) I2 {5 D
0 Z U3 _" j: m2 t( `3 Q7 ~
还可以采用控件的UserData属性来保存数据。每个GUI对象都有UserData属性,可以用来存储任何类型的数据。用户可以通过函数get()获取数据,通过函数set()设置数据。除此之外,还可以将变量用global设置为全局变量,从而实现数据的共享。- \; q" C; |5 N3 u
2 e3 h# r P' z对话框创建
5 f9 E' G5 }% @" G* f: z# ]打开GUIDE,新建一个button,然后运行找回调函数,添加如下代码4 e0 T- {1 \8 B9 p, ~* J
' i8 e! p8 X9 ^, T a& |5 ~# C- function pushbutton1_Callback(hObject, eventdata, handles)
- choice=questdlg('你要关闭吗?','关闭对话框','Yes','No','No')%问题对话框,默认为No
- switch choice,
- case 'Yes'
- delete(handles.figure1);%关闭窗口
- return;
- case 'No'
- return;
- end2 \" ^: _6 C/ w. G1 e, X0 v; V
3 H9 w8 k; H2 @- a* \& Q+ @: C% ]. u
# h# `; C* Y+ Y
( e. B6 p7 A2 B, r$ Q) u! R( b Q6 N0 Q, m+ u
利用滑动条实现颜色调控
- x3 w6 b) J. u: f7 r0 @SliderStep 为[0.01 0.1] :一个是小步长,是点击slider两端的箭头移动的步长;一个是大步长,是点击slider时移动的步长
4 R2 v# l6 `5 @- d0 W$ R! {6 b6 [+ I+ y
- function slider1_Callback(hObject, eventdata, handles)
- val=get(hObject,'value');%通过get获取滑动条的当前值
- set(handles.text1,'BackgroundColor',[val val val]);
1 n6 a$ o- e6 [( _% p! }( q
! @3 k, ]; B% u( m9 c0 l7 P. d
3 j( d0 Z# m2 R$ Q- J效果:$ w& ^7 a) h) T! E( a
' u- l1 P. {4 a, d
/ u$ T3 u& G4 j* J' G% h
5 V" t" D3 A2 S' Q: l4 F+ ^- r
7 }4 N( k9 i$ }0 D$ |, G, p
+ t/ H. ~8 }" D1 [# w/ }3 m
) {. D& V" ?: s2 T' A a7 F
# y# T* G6 w. }) M
0 U- z' V- h! G9 M; _" J5 e8 W
利用弹出式菜单选择并输入文本框) B5 O& W1 P$ \7 a
% S; Z8 L2 g, e6 s. |- 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 U4 J' t, q8 j6 n- w ) I- B$ G6 w6 [: T3 e
- j1 k! M0 ^- u" |
效果:) _" j/ T; o& a# Z
: e4 K; G& i; B
+ K1 w7 d- [, s2 z, d
{2 J+ _* d. \8 }4 J
" u5 c) K0 e) x8 O( ]3 A9 d" A) d) T/ ~
. m! w6 s% m7 O: n3 @) T s
0 e7 `# h0 B& Y利用列表框选择并输入文本框- S# w0 P& v! D; O% }8 n+ r% T }+ q
0 b9 Z5 x5 P3 B D9 i0 Q
- 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;, `# X5 W; I$ P+ u, Z7 U9 Y
1 X6 ]" E, c( _9 v' P5 o; A+ j
' l; d; h: @! Z
效果:4 U9 T: Y# W9 [. y3 k
9 E, e+ u& ?3 Q8 t$ ^3 y6 v+ F
) U5 `- c9 F" L$ H
5 R2 |1 \8 k2 t2 f% ~5 s: S& F$ J3 S+ D
; m: N; [9 e' r2 U: j1 d4 ^9 g
|
|