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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

, m: p  ^+ p( y# `! L! S6 c文章目录. Y+ r+ h6 `$ ~
前言" L1 N# R, m- m3 ~5 O. [. E
matlab数据传递概观
3 T$ a% o9 R6 G2 l: ~对话框创建3 a! D. ?; |; ]0 y! W) p
利用滑动条实现颜色调控* r; i7 z- L0 K: m! }+ ]
利用弹出式菜单选择并输入文本框8 y" n5 O: N. ^, a- ]: B
利用列表框选择并输入文本框
( H. N! L5 Q' _& A
: m8 \6 o1 G& A. p% [; p* w4 L$ a! N6 c前言8 J' m$ N) _9 Q5 r
我觉得gui无非就是给程序加了件衣服,其实具体的程序我们都会写,我们唯一不明白的是那几个部分数据之间的传递,以及怎么获取数据处理数据。
! B& k% f1 O" K9 E, C% d/ H, x" Q& p" n2 g! o
matlab数据传递概观4 y$ [# `$ d* u" l& u; `# g. u0 J
在GUI的各个控件之间进行数据传递,可以采用以下两种方法,利用结构体handles和控件的UserData属性。1 R  S  t0 X- G2 b7 t5 G, N1 c

6 [% a- H% c% C+ E( K$ u结构体handles保存了GUI的数据。当在运行GUI时,M文件会自动产生结构体handles,其中保存了所有GUI对象的数据,可以看作是一个数据的容器。用户可在handles中找到所有控件的信息。handles在各各控件的callback之间传来传去。
6 v% T1 |, F# q/ H3 J7 s2 F6 N
; ?* l2 h; [* l通过在结构体handles中新建字段并放置数据,可以实现数据在各个控件之间共享  _% B. E( u$ k

0 F2 Z. V" I  q8 ^! C+ J% F5 V, W
  • handles.a=a;
  • guidata (hobject, handles);  %更新6 J* |# J0 d4 P- m6 S
4 c0 d' F% t$ ^" s. Z6 |
7 O' T9 S, H& o4 s
在结构体handles中新建字段a,并保存变量a的值然后利用函数guidata()更新handles中的数据。则在任何需要获取该变量值的地方,可以使用如下语句:
, c% V9 P4 l9 {: S% I2 d8 |5 t* v) H$ b8 c0 @9 m0 H
  • a=handles.a;' C9 q8 C! L5 m. U& A
( u2 ~* C) W7 [9 p: x$ s4 L

) _# G( a; T, U还可以采用控件的UserData属性来保存数据。每个GUI对象都有UserData属性,可以用来存储任何类型的数据。用户可以通过函数get()获取数据,通过函数set()设置数据。除此之外,还可以将变量用global设置为全局变量,从而实现数据的共享。6 r, ?# q4 f8 K: Q6 O6 t
( O7 V5 U# S/ A
对话框创建7 J) h9 l5 b0 q. J& S" M' K* u1 N
打开GUIDE,新建一个button,然后运行找回调函数,添加如下代码
9 ~* I& M7 U2 ^, T: W' e( b
* }5 F3 T* A- ?( @7 @7 ^: m
  • function pushbutton1_Callback(hObject, eventdata, handles)
  • choice=questdlg('你要关闭吗?','关闭对话框','Yes','No','No')%问题对话框,默认为No
  • switch choice,
  •     case 'Yes'
  •         delete(handles.figure1);%关闭窗口
  •         return;
  •     case 'No'
  •         return;
  • end3 U# }) S& A' ~  d% |8 F6 F
% n- _2 r" O$ C! E9 K  _; ~8 q
2 |: v' x# u# ?2 V4 h6 N
4 M" q* C8 u( c, _6 z
6 h; w- e* L  w# U
利用滑动条实现颜色调控
! A. W3 p( W7 C: ?$ V% Y" gSliderStep 为[0.01 0.1] :一个是小步长,是点击slider两端的箭头移动的步长;一个是大步长,是点击slider时移动的步长5 @0 p0 R8 m& ]* _# b2 O8 J. g" V

# ]* f( g/ V, }& D
  • function slider1_Callback(hObject, eventdata, handles)
  • val=get(hObject,'value');%通过get获取滑动条的当前值
  • set(handles.text1,'BackgroundColor',[val val val]);/ |4 U( G* c" O' I4 A

* A/ E1 p# ]( ^$ ^! r9 ~( i9 K1 G5 F1 v& s
效果:: u6 S" q8 |0 ^3 L; n4 S

* B0 T; \4 i+ D8 H) a$ G1 Z& z. P, L% b , `. n( [* [# J$ x; o
. h, U8 e# q$ s. J7 G

, K7 Z/ G! _0 O2 L
) A/ ^1 M6 q, J2 M5 f" I
+ J; K: z1 v! J, B, i
; V3 ?4 _0 e( D  p* D  ~  o$ [1 t6 v" N5 \9 t! K
利用弹出式菜单选择并输入文本框
7 A4 B- i  d* n8 F  z" a" z9 L; n$ M2 W' Z5 Z- `; [8 x
  • 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
    , ?+ X5 s% E2 i
4 @$ R% s2 V% i, g* Z& D' r2 n

2 l9 `( U. Y" {; I/ D- i, b& A5 q效果:
' h: {" u: w* j8 _7 o; n) B& L" F9 E; W) a8 R

  [* P4 z) y5 \: c4 m7 P/ k# a. `, w, a: `
6 Z* H4 S9 W" d1 x% v

. R0 M; U& W2 V# I. U
* n" f# t; b2 Y- Y" j# ?# g0 C利用列表框选择并输入文本框
  J% _: F; b' c- i2 ?8 J
" v! O' c1 r# R  |+ D' B* r
  • 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;
    # k7 C/ z; _4 d
7 C* B0 b/ W5 n  }5 r
' m4 H6 `# C. w8 ~: Y9 H  Z. e
效果:
) E! L1 B: W7 Z8 S; _
5 x5 F8 s" n  H+ m' a1 ~5 @8 v 6 K9 x4 C( W4 q3 b$ m
# Z8 f/ _# ~$ C4 L$ I
9 ^9 L- Q" v& N, }  j
- _) n  Y' x/ c; \- V6 z
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-31 23:52 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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