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

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

[复制链接]

该用户从未签到

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

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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-12 05:49 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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