找回密码
 注册
关于网站域名变更的通知
查看: 2085|回复: 1
打印 上一主题 下一主题

熟悉一下matlab guide对话框、滑动条、弹出式菜单、列表框的使用方法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-12-18 11:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

5 g1 I( ?6 G7 P1 p- Q0 J% k# X+ {. _文章目录
: @1 I5 s4 Y' q, ?9 f8 s5 E) V前言$ Y9 ]$ a  I( J3 X
matlab数据传递概观
. Z9 ]) x! ]- ~对话框创建
- g; W7 L$ S! t) K5 g利用滑动条实现颜色调控3 K% T) F, j# \% O: h0 ?* R
利用弹出式菜单选择并输入文本框( g  G' `9 ^2 I* e
利用列表框选择并输入文本框* Z5 D. t( d! Z6 d  Q3 {
4 ^: ~+ D. Q+ r. x
前言7 r$ f; U5 D0 r/ `. p' A  R
我觉得gui无非就是给程序加了件衣服,其实具体的程序我们都会写,我们唯一不明白的是那几个部分数据之间的传递,以及怎么获取数据处理数据。; k: a! N1 y% J( @- Q8 `

# X* C, o0 A5 r# s0 Y% @matlab数据传递概观. `/ n$ _- r- a+ `3 o; I
在GUI的各个控件之间进行数据传递,可以采用以下两种方法,利用结构体handles和控件的UserData属性。( h! z7 s, N# _. {) F  y$ W& }" ~

! k; ^* H6 q4 r4 w4 f2 Y$ v结构体handles保存了GUI的数据。当在运行GUI时,M文件会自动产生结构体handles,其中保存了所有GUI对象的数据,可以看作是一个数据的容器。用户可在handles中找到所有控件的信息。handles在各各控件的callback之间传来传去。8 S# C& y% k, g
) A9 ^2 H/ ]! _! m
通过在结构体handles中新建字段并放置数据,可以实现数据在各个控件之间共享/ w! d% [1 J; [
- k/ ^0 {6 Q+ L6 a0 U
  • handles.a=a;
  • guidata (hobject, handles);  %更新+ y9 ^$ y" G% Q9 {

) w7 w" P5 h9 ~) E$ q# i; h# V& s' X8 b% H( Z' P
在结构体handles中新建字段a,并保存变量a的值然后利用函数guidata()更新handles中的数据。则在任何需要获取该变量值的地方,可以使用如下语句:/ f# ?$ P, @0 W0 Q! P

) b; Y! `& w* j3 a. N
  • a=handles.a;% X4 k, k8 ?  M  g& h
2 B( r" X" Y1 j& J

% H2 R! \  X& ]+ [2 B9 c+ P! {. w+ Y/ S还可以采用控件的UserData属性来保存数据。每个GUI对象都有UserData属性,可以用来存储任何类型的数据。用户可以通过函数get()获取数据,通过函数set()设置数据。除此之外,还可以将变量用global设置为全局变量,从而实现数据的共享。) L1 f8 F4 d1 Z
+ `) c. z( }. `- {8 U5 f
对话框创建8 O' g% c, N5 Q" B7 K! r, ~1 S* f. q
打开GUIDE,新建一个button,然后运行找回调函数,添加如下代码( D: [5 k9 V/ a* m4 c

7 c9 V. M" Q* l4 z; D
  • function pushbutton1_Callback(hObject, eventdata, handles)
  • choice=questdlg('你要关闭吗?','关闭对话框','Yes','No','No')%问题对话框,默认为No
  • switch choice,
  •     case 'Yes'
  •         delete(handles.figure1);%关闭窗口
  •         return;
  •     case 'No'
  •         return;
  • end" T( C$ Y% T+ r$ Q& r' ~. m
& i+ Q8 }3 l7 |8 w; q: m
/ A4 ]# Y9 ]- ^0 T- G' B& F  Z

7 b: ~* e5 t2 K8 S
& S! R- c  w9 n+ X5 {利用滑动条实现颜色调控
% y# m8 g8 r2 r9 y$ SSliderStep 为[0.01 0.1] :一个是小步长,是点击slider两端的箭头移动的步长;一个是大步长,是点击slider时移动的步长
/ n9 e! ~7 H+ A8 _" X- ]
) F1 e: s! K% e% N9 L
  • function slider1_Callback(hObject, eventdata, handles)
  • val=get(hObject,'value');%通过get获取滑动条的当前值
  • set(handles.text1,'BackgroundColor',[val val val]);
    # D; S' Z4 l1 C4 s
6 c) C' q7 j4 R; c6 j

* }( f' z: q1 i  n* F7 ~0 t效果:% ^, Z) D9 W# c# ?0 b( Y1 |; O

9 _8 t+ r2 b3 d" H, D3 U3 }+ D , Z- f9 t/ o; o: |; T- L) e

! j7 t# _3 ?6 I7 |2 d4 z5 g+ K
' h- q% d3 \  v1 @- v) n9 ]2 K6 L1 n! P0 v5 r) T! t3 R
( {7 L) \$ |/ `8 b& ]

" y6 a+ Q- L$ o) U* z, L# _8 q# _+ T6 [) d7 T: j! V5 |% Q4 U$ T
利用弹出式菜单选择并输入文本框6 d7 f0 ]4 N% K  E7 o+ |- D  u9 V

& r; _2 ^' f) m- `: r2 h
  • 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, @: e( K6 c/ ]5 e- X7 y/ L* h) A

( N$ g( f. q1 i$ R. c3 E9 S( z8 F) R3 n  O
效果:3 l; e+ D1 I% e) H1 x
5 D+ }( t" t3 o
) j8 ~& q( E* Q: {/ C7 T

( Q2 A# l: e' s. b
1 @" c2 j' o5 Q0 Y% v
- j- k% J  @! K
) }" x3 c+ ^# p6 d利用列表框选择并输入文本框4 O6 }5 n5 F' e
% v! z6 J2 W/ k9 n3 X0 f
  • 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;
    , x$ c) l! J7 {7 _. C6 Z
2 O; Q" ^' z- H, H9 `6 o* n
3 Z8 T5 r7 f( d1 t# x
效果:% O& ^2 C9 H+ l& b
6 W8 j; z/ J( o2 k

& E5 \2 C0 u3 O/ G
' j$ e/ Z+ m4 j" z( E# P$ O2 _; V1 t. e# G# G3 v$ k

* R4 r7 r$ M; V9 |. U
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-23 21:57 , Processed in 0.156250 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表