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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
- R4 \- b/ `3 v
文章目录
- Y$ v% }0 _* A0 c, U前言& {$ k+ w' `2 V$ T2 Q& }# K% T6 _
matlab数据传递概观! U  M8 F4 c3 Q: {2 P/ Q
对话框创建
. x) _" G; X" r0 B; ^" V利用滑动条实现颜色调控
8 F/ ?6 A  P2 Y1 u3 D利用弹出式菜单选择并输入文本框
5 r% T+ Z- @* i利用列表框选择并输入文本框
4 x4 o- l6 w4 m4 h% r% t1 q1 F+ z- \/ W1 N/ o
前言
7 B( _2 z7 E6 ~2 q/ s我觉得gui无非就是给程序加了件衣服,其实具体的程序我们都会写,我们唯一不明白的是那几个部分数据之间的传递,以及怎么获取数据处理数据。5 H2 I$ n7 D" p3 w% h4 u
0 Z% ]/ e: P1 ^5 w$ b" V* H
matlab数据传递概观( Z7 B" Y6 P" Q; P
在GUI的各个控件之间进行数据传递,可以采用以下两种方法,利用结构体handles和控件的UserData属性。
) y3 c5 s" T& T2 E4 R9 Z. @/ N/ {; U8 F
结构体handles保存了GUI的数据。当在运行GUI时,M文件会自动产生结构体handles,其中保存了所有GUI对象的数据,可以看作是一个数据的容器。用户可在handles中找到所有控件的信息。handles在各各控件的callback之间传来传去。# y1 B- N# T; y+ k. u
+ P& Z" m& u* Q$ _
通过在结构体handles中新建字段并放置数据,可以实现数据在各个控件之间共享
: W: J, D+ u/ M5 b+ \: I& `5 q  Q  D/ y0 @, l# e
  • handles.a=a;
  • guidata (hobject, handles);  %更新
    ) D2 L: S; g1 z
- R6 f4 ]; j. }

  B, k; g2 I( a$ V/ l# z在结构体handles中新建字段a,并保存变量a的值然后利用函数guidata()更新handles中的数据。则在任何需要获取该变量值的地方,可以使用如下语句:
! h: U$ s& s9 I+ |# B9 h6 g0 a
$ ]! O! E' ^& d6 _
  • a=handles.a;
    ' E" a& ^/ y" Y* y0 ~

  Z7 {. `' S. p& a
( E# r3 e+ H% c- g还可以采用控件的UserData属性来保存数据。每个GUI对象都有UserData属性,可以用来存储任何类型的数据。用户可以通过函数get()获取数据,通过函数set()设置数据。除此之外,还可以将变量用global设置为全局变量,从而实现数据的共享。
+ ?1 f  C9 u1 a0 Z/ j+ @
2 p/ j& X. y- A  j; o( O; G4 G1 C6 ~$ S对话框创建  n. _0 v+ A9 ]+ w
打开GUIDE,新建一个button,然后运行找回调函数,添加如下代码% K3 f, O% j- J+ k

) Q7 X: Y' ~; h  a. [9 [" I
  • function pushbutton1_Callback(hObject, eventdata, handles)
  • choice=questdlg('你要关闭吗?','关闭对话框','Yes','No','No')%问题对话框,默认为No
  • switch choice,
  •     case 'Yes'
  •         delete(handles.figure1);%关闭窗口
  •         return;
  •     case 'No'
  •         return;
  • end
    5 F1 n6 }. w8 N

- a0 {) C7 H: O& ~2 Q& ]1 q, x
. U5 p  Z, v1 p' [- E0 l- o
* a, V. B7 ]' S+ g1 j9 E5 _) g& c  X4 _6 \3 e% s2 b* M) ~- m
利用滑动条实现颜色调控
. u- l0 ^; V* v+ d8 f) {3 xSliderStep 为[0.01 0.1] :一个是小步长,是点击slider两端的箭头移动的步长;一个是大步长,是点击slider时移动的步长; _! Z8 M- j' @' y1 S; e$ N, W2 X
8 e/ k. U/ ^& g) W
  • function slider1_Callback(hObject, eventdata, handles)
  • val=get(hObject,'value');%通过get获取滑动条的当前值
  • set(handles.text1,'BackgroundColor',[val val val]);2 I+ o. ?4 o0 n/ U3 v

5 G6 u) t' }2 d9 H$ n$ `$ P# J1 e6 s/ R4 M+ q5 L
效果:
8 y4 W' }% g4 V1 Y: h
% e; z+ R3 f& ]' H6 |8 a
! J. k- @3 B4 [/ w0 s5 I1 O& j% l$ s
- T8 s: ]% g* `) U3 [ 4 Y/ U2 R1 z, l
* ^* d1 q" }6 {& b. }

  x$ D% f, m# f  v
6 A8 V& k2 ?, ?* g8 `
) d( C  {0 v0 U" m利用弹出式菜单选择并输入文本框
5 \& p8 A+ e8 _, O8 C' \4 j  ]$ c' 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( m4 _, ~# A$ }% k" V

( b3 H1 M3 S* V+ L% a/ T8 X5 {9 X; e7 s
效果:; G$ e6 E8 X% B

) O( h7 C3 s4 R  H
8 k/ S* y2 c  D; g. ?! I, _* Q$ r- i. }! L0 A/ `; _+ C! ^3 n0 P3 M

% e- f% |1 Q" o, L) c2 D2 V8 r$ n, D7 z6 o& `% m5 Q
3 a( \$ V) m5 }" s
利用列表框选择并输入文本框4 y) M6 v* C6 P+ `9 Y( m& W
# b1 _9 I; e7 [
  • 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;+ k( `: t8 Y& l/ f, D
3 O1 B% R7 o( W5 R0 Y! m
0 d! v" P% T. q7 L" G' x
效果:
+ i0 F& w' D0 j( g  y
* E" O* H7 d  \$ ?/ b
4 u& Z# X3 o$ L0 Y, w8 J/ c3 ^& j1 I' `
4 O  x5 X8 T! C4 j+ _; c9 b. `/ q7 j
0 S; I6 Q9 a: U7 X" a, s5 |  x$ ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-20 15:06 , Processed in 0.140625 second(s), 27 queries , Gzip On.

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

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

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