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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

6 ]& O" L2 y; J" M文章目录* f) L2 H$ L* [' i
前言0 o( r4 |4 c4 V" p/ V5 b: R0 O
matlab数据传递概观3 a- B- @2 a- f- _$ V
对话框创建; H$ C- G) E4 c/ e# d$ _
利用滑动条实现颜色调控
  U, V, T; F. Z利用弹出式菜单选择并输入文本框7 l  ^5 C- ?* M7 r; G$ V: u
利用列表框选择并输入文本框
! l. c+ q4 w' N% \# Z; V  v& T( j8 m- t3 e+ `; f
前言/ ^* `! O- p, e) D" M! ?
我觉得gui无非就是给程序加了件衣服,其实具体的程序我们都会写,我们唯一不明白的是那几个部分数据之间的传递,以及怎么获取数据处理数据。- L7 @0 l! \4 l4 x; ]
; w/ ~% ]% Z( d+ p! }) h
matlab数据传递概观
" B6 P! k0 f2 d( e  F在GUI的各个控件之间进行数据传递,可以采用以下两种方法,利用结构体handles和控件的UserData属性。
$ u7 c4 F: ~1 I( T, p  c3 ]6 N( |3 |6 G
结构体handles保存了GUI的数据。当在运行GUI时,M文件会自动产生结构体handles,其中保存了所有GUI对象的数据,可以看作是一个数据的容器。用户可在handles中找到所有控件的信息。handles在各各控件的callback之间传来传去。) m! v* }. O$ B/ g. U0 t
" U* g* ^/ b. j* ]2 j
通过在结构体handles中新建字段并放置数据,可以实现数据在各个控件之间共享% N! k; ~) U& T

2 J3 }! ?/ w5 B6 {- i) |3 @
  • handles.a=a;
  • guidata (hobject, handles);  %更新
      F, O3 J- S: S1 v: w
: i7 r( u8 J+ F4 @* K+ [5 C1 e
0 v: I' c& |. `6 _1 u2 z1 ~, @/ Q
在结构体handles中新建字段a,并保存变量a的值然后利用函数guidata()更新handles中的数据。则在任何需要获取该变量值的地方,可以使用如下语句:
% q. `" O9 c' G
" k# T4 Y" i: }8 {( K
  • a=handles.a;
    3 g' G- j9 n. m9 z: f% _
: r* Z6 t5 a0 C6 t& I
5 G% V# I8 I4 N. {4 c8 x
还可以采用控件的UserData属性来保存数据。每个GUI对象都有UserData属性,可以用来存储任何类型的数据。用户可以通过函数get()获取数据,通过函数set()设置数据。除此之外,还可以将变量用global设置为全局变量,从而实现数据的共享。8 K7 ~. a0 ~# n% d5 I
7 c5 c$ [. R( ~
对话框创建
% M+ t# v/ |( M打开GUIDE,新建一个button,然后运行找回调函数,添加如下代码
7 D( |8 {4 }& ?: X: n' M( v! u4 J* P( A
  • function pushbutton1_Callback(hObject, eventdata, handles)
  • choice=questdlg('你要关闭吗?','关闭对话框','Yes','No','No')%问题对话框,默认为No
  • switch choice,
  •     case 'Yes'
  •         delete(handles.figure1);%关闭窗口
  •         return;
  •     case 'No'
  •         return;
  • end
    ' s8 ]' W3 Y' R( z+ X1 ~9 ?" l: T
  q! L8 g% x- J% ]  a  h" W

5 m4 F) J0 H1 o5 S' T' _. W8 R: P' H  y1 p! J
4 A! I; T! ^1 N( j4 d9 H0 p
利用滑动条实现颜色调控
6 s7 Z' T8 Q/ E& q* _  c! J. XSliderStep 为[0.01 0.1] :一个是小步长,是点击slider两端的箭头移动的步长;一个是大步长,是点击slider时移动的步长
5 p8 w! P& Q  t* v' Y, f( K+ U5 s
6 y) m$ E% n- [) s0 r5 A; A% `% y
  • function slider1_Callback(hObject, eventdata, handles)
  • val=get(hObject,'value');%通过get获取滑动条的当前值
  • set(handles.text1,'BackgroundColor',[val val val]);! \5 U* {& b& ^5 F8 n/ i& [# x, M9 _

0 @! L3 c  l1 P( g9 m% |5 n9 ]( }% ?! W
效果:' N  }5 p1 V6 ^3 u/ b4 j; @! h
5 S% d1 }/ A+ P

) ~2 H( J+ l# N6 N8 l$ A# q0 a: w' M/ R
4 n" A. n& }$ I' S+ h

. W& ~; I8 Q' N6 N ; K* k" i7 M% B$ l) h8 F+ M7 L
' S8 Q% |: E5 N$ @. F2 G( K, k- @

: C$ @- |* F& J5 k! V/ {1 N利用弹出式菜单选择并输入文本框" T4 e) H. y7 N! G4 ~
  R% F  d; b  R6 m& 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% {6 q* ^! T# G( U, C( G! ]% ~# A, q7 c
% g9 ^# {# O, O+ J$ q' |
  q/ x( u4 s4 y/ ~( m% V& q  ?
效果:
; y4 L  M: V* w( `* J4 _8 o
* ~; }& T" N/ X8 j9 u" B4 V) [
9 |% f/ b! C/ P3 w: `# w8 b( l( y3 I4 p1 V
" U* P9 g: X$ A) X9 F$ r

' Z. X% G3 W: C7 f+ l/ O5 t5 T* @, C. J/ z) C% u. h. [& @( M; n
利用列表框选择并输入文本框/ |' E0 B+ J; a+ `

6 B0 o) J1 i7 `6 B2 t( i% h
  • 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;
    - I7 n" b# O+ w5 M5 C
* P1 Y# x$ o) s3 u
2 i: }9 L' Y; i5 m
效果:: j5 p" y$ S" h! p3 o
; o/ w1 ^1 T7 U2 y

2 m4 m1 U; V# f
  C+ D8 t. v0 w2 n+ M' S# G% p$ D+ ^

. F/ o9 Y/ |' c  Y+ K
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-5 13:41 , Processed in 0.187500 second(s), 27 queries , Gzip On.

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

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

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