|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
6 ]& O" L2 y; J" M文章目录* f) L2 H$ L* [' i
前言0 o( r4 |4 c4 V" p/ V5 b: R0 O
matlab数据传递概观3 a- B- @2 a- f- _$ V
对话框创建; H$ C- G) E4 c/ e# d$ _
利用滑动条实现颜色调控
U, V, T; F. Z利用弹出式菜单选择并输入文本框7 l ^5 C- ?* M7 r; G$ V: u
利用列表框选择并输入文本框
! l. c+ q4 w' N% \# Z; V v& T( j8 m- t3 e+ `; f
前言/ ^* `! O- p, e) D" M! ?
我觉得gui无非就是给程序加了件衣服,其实具体的程序我们都会写,我们唯一不明白的是那几个部分数据之间的传递,以及怎么获取数据处理数据。- L7 @0 l! \4 l4 x; ]
; w/ ~% ]% Z( d+ p! }) h
matlab数据传递概观
" B6 P! k0 f2 d( e F在GUI的各个控件之间进行数据传递,可以采用以下两种方法,利用结构体handles和控件的UserData属性。
$ u7 c4 F: ~1 I( T, p c3 ]6 N( |3 |6 G
结构体handles保存了GUI的数据。当在运行GUI时,M文件会自动产生结构体handles,其中保存了所有GUI对象的数据,可以看作是一个数据的容器。用户可在handles中找到所有控件的信息。handles在各各控件的callback之间传来传去。) m! v* }. O$ B/ g. U0 t
" U* g* ^/ b. j* ]2 j
通过在结构体handles中新建字段并放置数据,可以实现数据在各个控件之间共享% N! k; ~) U& T
2 J3 }! ?/ w5 B6 {- i) |3 @- handles.a=a;
- guidata (hobject, handles); %更新
F, O3 J- S: S1 v: w : i7 r( u8 J+ F4 @* K+ [5 C1 e
0 v: I' c& |. `6 _1 u2 z1 ~, @/ Q
在结构体handles中新建字段a,并保存变量a的值然后利用函数guidata()更新handles中的数据。则在任何需要获取该变量值的地方,可以使用如下语句:
% q. `" O9 c' G
" k# T4 Y" i: }8 {( K- a=handles.a;
3 g' G- j9 n. m9 z: f% _ : r* Z6 t5 a0 C6 t& I
5 G% V# I8 I4 N. {4 c8 x
还可以采用控件的UserData属性来保存数据。每个GUI对象都有UserData属性,可以用来存储任何类型的数据。用户可以通过函数get()获取数据,通过函数set()设置数据。除此之外,还可以将变量用global设置为全局变量,从而实现数据的共享。8 K7 ~. a0 ~# n% d5 I
7 c5 c$ [. R( ~
对话框创建
% M+ t# v/ |( M打开GUIDE,新建一个button,然后运行找回调函数,添加如下代码
7 D( |8 {4 }& ?: X: n' M( v! u4 J* P( A
- function pushbutton1_Callback(hObject, eventdata, handles)
- choice=questdlg('你要关闭吗?','关闭对话框','Yes','No','No')%问题对话框,默认为No
- switch choice,
- case 'Yes'
- delete(handles.figure1);%关闭窗口
- return;
- case 'No'
- return;
- end
' s8 ]' W3 Y' R( z+ X1 ~9 ?" l: T q! L8 g% x- J% ] a h" W
5 m4 F) J0 H1 o5 S' T' _. W8 R: P' H y1 p! J
4 A! I; T! ^1 N( j4 d9 H0 p
利用滑动条实现颜色调控
6 s7 Z' T8 Q/ E& q* _ c! J. XSliderStep 为[0.01 0.1] :一个是小步长,是点击slider两端的箭头移动的步长;一个是大步长,是点击slider时移动的步长
5 p8 w! P& Q t* v' Y, f( K+ U5 s
6 y) m$ E% n- [) s0 r5 A; A% `% y- function slider1_Callback(hObject, eventdata, handles)
- val=get(hObject,'value');%通过get获取滑动条的当前值
- set(handles.text1,'BackgroundColor',[val val val]);! \5 U* {& b& ^5 F8 n/ i& [# x, M9 _
0 @! L3 c l1 P( g9 m% |5 n9 ]( }% ?! W
效果:' N }5 p1 V6 ^3 u/ b4 j; @! h
5 S% d1 }/ A+ P
) ~2 H( J+ l# N6 N8 l$ A# q0 a: w' M/ R
4 n" A. n& }$ I' S+ h
. W& ~; I8 Q' N6 N
; K* k" i7 M% B$ l) h8 F+ M7 L
' S8 Q% |: E5 N$ @. F2 G( K, k- @
: C$ @- |* F& J5 k! V/ {1 N利用弹出式菜单选择并输入文本框" T4 e) H. y7 N! G4 ~
R% F d; b R6 m& 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% {6 q* ^! T# G( U, C( G! ]% ~# A, q7 c
% g9 ^# {# O, O+ J$ q' |
q/ x( u4 s4 y/ ~( m% V& q ?
效果:
; y4 L M: V* w( `* J4 _8 o
* ~; }& T" N/ X8 j9 u" B4 V) [
9 |% f/ b! C/ P3 w: `# w8 b( l( y3 I4 p1 V
" U* P9 g: X$ A) X9 F$ r
' Z. X% G3 W: C7 f+ l/ O5 t5 T* @, C. J/ z) C% u. h. [& @( M; n
利用列表框选择并输入文本框/ |' E0 B+ J; a+ `
6 B0 o) J1 i7 `6 B2 t( i% h- 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;
- I7 n" b# O+ w5 M5 C * P1 Y# x$ o) s3 u
2 i: }9 L' Y; i5 m
效果:: j5 p" y$ S" h! p3 o
; o/ w1 ^1 T7 U2 y
2 m4 m1 U; V# f
C+ D8 t. v0 w2 n+ M' S# G% p$ D+ ^
. F/ o9 Y/ |' c Y+ K |
|