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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

5 _$ S; ~6 `, M6 G文章目录% X7 V0 L; z* Q/ \
前言
7 w8 T6 s+ B. k6 c$ D) L& gmatlab数据传递概观8 a" k& V) @) h, {$ k" O6 u8 X- w
对话框创建
2 ^& K" c" q* p  p利用滑动条实现颜色调控) G6 Z  D, |6 ]+ Y
利用弹出式菜单选择并输入文本框- l- S4 b" t5 D, ^' k+ p0 w
利用列表框选择并输入文本框
5 O: l) O1 V% V3 A2 y( Z7 k  q' O/ F0 e
前言8 o& ]2 e2 p0 z$ b# c/ l
我觉得gui无非就是给程序加了件衣服,其实具体的程序我们都会写,我们唯一不明白的是那几个部分数据之间的传递,以及怎么获取数据处理数据。' X' p1 n, {# j3 B
$ |- b; z# e8 j
matlab数据传递概观
: v3 W5 H# @% t$ N# A- ?' d/ b在GUI的各个控件之间进行数据传递,可以采用以下两种方法,利用结构体handles和控件的UserData属性。
( }5 J4 s2 P% {" j: E: z& o# s$ a  ^( `% L
结构体handles保存了GUI的数据。当在运行GUI时,M文件会自动产生结构体handles,其中保存了所有GUI对象的数据,可以看作是一个数据的容器。用户可在handles中找到所有控件的信息。handles在各各控件的callback之间传来传去。
. ~# G/ z% I% H
$ T9 `  H6 M6 R+ B: |1 J通过在结构体handles中新建字段并放置数据,可以实现数据在各个控件之间共享7 k3 x+ Y5 w9 e3 R
/ t9 ]' |' ~) I5 Y* |% t% ~
  • handles.a=a;
  • guidata (hobject, handles);  %更新) Z  P3 n& _. o" m

/ s* j; s6 U, F" `( y
9 s4 ~+ q0 Z  u, Z在结构体handles中新建字段a,并保存变量a的值然后利用函数guidata()更新handles中的数据。则在任何需要获取该变量值的地方,可以使用如下语句:  e( K" x6 }* m) i4 E

5 ^4 K! c+ [$ [# C6 V7 n& E
  • a=handles.a;& ?& E# ?/ M# U$ k

' @( ?3 y( d: k- O3 u
! l* {& @: U0 t! h还可以采用控件的UserData属性来保存数据。每个GUI对象都有UserData属性,可以用来存储任何类型的数据。用户可以通过函数get()获取数据,通过函数set()设置数据。除此之外,还可以将变量用global设置为全局变量,从而实现数据的共享。) u( C: o" F1 C0 _2 t1 G$ C
. W# f% E$ a; ~1 [& s
对话框创建5 |% z4 k1 t) p7 V4 o, n; z, q
打开GUIDE,新建一个button,然后运行找回调函数,添加如下代码& Q+ K  E0 C7 J  K

. @8 w) {0 |( N5 H) W1 Z
  • function pushbutton1_Callback(hObject, eventdata, handles)
  • choice=questdlg('你要关闭吗?','关闭对话框','Yes','No','No')%问题对话框,默认为No
  • switch choice,
  •     case 'Yes'
  •         delete(handles.figure1);%关闭窗口
  •         return;
  •     case 'No'
  •         return;
  • end/ x& Q$ R4 M+ V+ r

0 H" i  x3 E* n' o3 b" K  ~4 `( x
, v% b' R, H8 A# Y
9 A( `+ ^0 `8 o+ d0 e- U/ v4 X9 U$ X+ b. {
利用滑动条实现颜色调控
# h4 @" Z1 ^" ]4 ^SliderStep 为[0.01 0.1] :一个是小步长,是点击slider两端的箭头移动的步长;一个是大步长,是点击slider时移动的步长
& I" Y$ e7 K# A* r, R/ i" k+ O; a% l- d4 Q% i. U' p
  • function slider1_Callback(hObject, eventdata, handles)
  • val=get(hObject,'value');%通过get获取滑动条的当前值
  • set(handles.text1,'BackgroundColor',[val val val]);. V( |7 G; n3 q& O4 u+ u: ]+ t
$ _, i) u/ {3 Q/ J) D3 H6 Y( I* C
2 i* q* K& a( c% W
效果:
/ ]( y/ ?, t( k$ _
3 k% p0 Q/ U  m0 W , x7 Q: I# S. `3 N0 @

8 U9 l4 t% |2 z
( L, C, }+ r; V$ E6 o% e
7 d0 K: z3 m2 M* Q0 }' }
, I: s  w2 ]& f, V/ u3 ]
2 H: E4 [$ x1 ?8 x: s/ _. \0 V, c4 T. t- I; a! q- x
利用弹出式菜单选择并输入文本框
3 b; r: c7 r- c$ K3 H* U; y2 c7 m! S$ B3 U  I+ V1 e
  • 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/ l  [- ?* H8 H4 o' M
/ y2 G, p  A, U5 ?3 D

/ s& R+ W) H& w5 U* A* u4 o$ ]效果:0 s/ n& {5 |& {$ c# P! B

/ s- \2 ^9 R( o6 u, R+ P $ B( K5 t( l% T4 E- T1 m% Y5 r

9 E; a- }3 v! U' E6 {
8 |3 k7 E, @9 U( r( c/ C, J0 K2 v
4 ~/ \- o! m! b$ i
8 }3 G- U4 `& l利用列表框选择并输入文本框) f/ h. s6 J+ c, r3 j: I
% c- E# a9 T7 }0 l
  • 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;
      H- r9 G  f/ R. x- y4 J' }

' ~6 O. Y+ `! R, M# V9 U* l8 O: V9 N* U& [: M6 M
效果:1 a& h+ Y7 ]3 O) K
  S) e& l% k/ Y* a4 _
- \4 w( d8 ?  Z* h

6 o7 z3 e6 w$ X9 s( D* {4 x' f" C' ?! N
0 M# S& p- e3 Z2 |1 L0 K/ ^* v/ l
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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