|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
5 _$ S; ~6 `, M6 G文章目录% X7 V0 L; z* Q/ \
前言
7 w8 T6 s+ B. k6 c$ D) L& gmatlab数据传递概观8 a" k& V) @) h, {$ k" O6 u8 X- w
对话框创建
2 ^& K" c" q* p p利用滑动条实现颜色调控) G6 Z D, |6 ]+ Y
利用弹出式菜单选择并输入文本框- l- S4 b" t5 D, ^' k+ p0 w
利用列表框选择并输入文本框
5 O: l) O1 V% V3 A2 y( Z7 k q' O/ F0 e
前言8 o& ]2 e2 p0 z$ b# c/ l
我觉得gui无非就是给程序加了件衣服,其实具体的程序我们都会写,我们唯一不明白的是那几个部分数据之间的传递,以及怎么获取数据处理数据。' X' p1 n, {# j3 B
$ |- b; z# e8 j
matlab数据传递概观
: v3 W5 H# @% t$ N# A- ?' d/ b在GUI的各个控件之间进行数据传递,可以采用以下两种方法,利用结构体handles和控件的UserData属性。
( }5 J4 s2 P% {" j: E: z& o# s$ a ^( `% L
结构体handles保存了GUI的数据。当在运行GUI时,M文件会自动产生结构体handles,其中保存了所有GUI对象的数据,可以看作是一个数据的容器。用户可在handles中找到所有控件的信息。handles在各各控件的callback之间传来传去。
. ~# G/ z% I% H
$ T9 ` H6 M6 R+ B: |1 J通过在结构体handles中新建字段并放置数据,可以实现数据在各个控件之间共享7 k3 x+ Y5 w9 e3 R
/ t9 ]' |' ~) I5 Y* |% t% ~
- handles.a=a;
- guidata (hobject, handles); %更新) Z P3 n& _. o" m
/ s* j; s6 U, F" `( y
9 s4 ~+ q0 Z u, Z在结构体handles中新建字段a,并保存变量a的值然后利用函数guidata()更新handles中的数据。则在任何需要获取该变量值的地方,可以使用如下语句: e( K" x6 }* m) i4 E
5 ^4 K! c+ [$ [# C6 V7 n& E- a=handles.a;& ?& E# ?/ M# U$ k
' @( ?3 y( d: k- O3 u
! l* {& @: U0 t! h还可以采用控件的UserData属性来保存数据。每个GUI对象都有UserData属性,可以用来存储任何类型的数据。用户可以通过函数get()获取数据,通过函数set()设置数据。除此之外,还可以将变量用global设置为全局变量,从而实现数据的共享。) u( C: o" F1 C0 _2 t1 G$ C
. W# f% E$ a; ~1 [& s
对话框创建5 |% z4 k1 t) p7 V4 o, n; z, q
打开GUIDE,新建一个button,然后运行找回调函数,添加如下代码& Q+ K E0 C7 J K
. @8 w) {0 |( N5 H) W1 Z- function pushbutton1_Callback(hObject, eventdata, handles)
- choice=questdlg('你要关闭吗?','关闭对话框','Yes','No','No')%问题对话框,默认为No
- switch choice,
- case 'Yes'
- delete(handles.figure1);%关闭窗口
- return;
- case 'No'
- return;
- end/ x& Q$ R4 M+ V+ r
0 H" i x3 E* n' o3 b" K ~4 `( x
, v% b' R, H8 A# Y
9 A( `+ ^0 `8 o+ d0 e- U/ v4 X9 U$ X+ b. {
利用滑动条实现颜色调控
# h4 @" Z1 ^" ]4 ^SliderStep 为[0.01 0.1] :一个是小步长,是点击slider两端的箭头移动的步长;一个是大步长,是点击slider时移动的步长
& I" Y$ e7 K# A* r, R/ i" k+ O; a% l- d4 Q% i. U' p
- function slider1_Callback(hObject, eventdata, handles)
- val=get(hObject,'value');%通过get获取滑动条的当前值
- set(handles.text1,'BackgroundColor',[val val val]);. V( |7 G; n3 q& O4 u+ u: ]+ t
$ _, i) u/ {3 Q/ J) D3 H6 Y( I* C
2 i* q* K& a( c% W
效果:
/ ]( y/ ?, t( k$ _
3 k% p0 Q/ U m0 W
, x7 Q: I# S. `3 N0 @
8 U9 l4 t% |2 z
( L, C, }+ r; V$ E6 o% e
7 d0 K: z3 m2 M* Q0 }' }
, I: s w2 ]& f, V/ u3 ]
2 H: E4 [$ x1 ?8 x: s/ _. \0 V, c4 T. t- I; a! q- x
利用弹出式菜单选择并输入文本框
3 b; r: c7 r- c$ K3 H* U; y2 c7 m! S$ B3 U I+ V1 e
- 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/ l [- ?* H8 H4 o' M
/ y2 G, p A, U5 ?3 D
/ s& R+ W) H& w5 U* A* u4 o$ ]效果:0 s/ n& {5 |& {$ c# P! B
/ s- \2 ^9 R( o6 u, R+ P
$ B( K5 t( l% T4 E- T1 m% Y5 r
9 E; a- }3 v! U' E6 {
8 |3 k7 E, @9 U( r( c/ C, J0 K2 v
4 ~/ \- o! m! b$ i
8 }3 G- U4 `& l利用列表框选择并输入文本框) f/ h. s6 J+ c, r3 j: I
% c- E# a9 T7 }0 l
- 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;
H- r9 G f/ R. x- y4 J' }
' ~6 O. Y+ `! R, M# V9 U* l8 O: V9 N* U& [: M6 M
效果:1 a& h+ Y7 ]3 O) K
S) e& l% k/ Y* a4 _
- \4 w( d8 ? Z* h
6 o7 z3 e6 w$ X9 s( D* {4 x' f" C' ?! N
0 M# S& p- e3 Z2 |1 L0 K/ ^* v/ l
|
|