EDA365电子论坛网

标题: 大神整理的matlab GUI 设计学习笔记 [打印本页]

作者: uperrua    时间: 2019-12-18 11:14
标题: 大神整理的matlab GUI 设计学习笔记

  X9 ]! z2 o% V1 ~图形用户界面(Graphical User Interface,GUI):1 X; {" P! b% b
用户与计算机进行信息交流的窗口。
# x2 w" m- |; k8 p* ]$ `6 R3 V$ \( |. I8 N+ M
设计图形用户界面的方法
5 [: F' p2 h" P% G+ g1 P/ l; P& O调用建立用户界面控件的函数  ]6 _4 J$ q1 i7 i: d
使用MATLAB提供的GUIDE工具进行可视化设计
. x+ W- |  H8 x
- ]+ v4 Q6 a6 G) q3 n$ K控件对象及其操作9 p/ v9 D$ c1 z7 `3 ]7 k
(1)常用控件( [1 \, M" g8 Q1 l! m$ l
输入和输出类控件:编辑框、静态文本、列表框、滑动条等。
: ?. R  k  N) i" [" _* E# E0 d4 P实施确认、选择操作类控件:按钮、双位按钮、单选按钮、复选框等8 R  v# Q. _1 T- S
(2)建立控件对象: o& Z) M+ u; g
函数uicontrol用于建立控件对象,其调用格式为:9 {* y; E+ W5 B  ?5 w& r# i
; l7 z5 i0 R" Q$ o5 I
句柄变量=uicontrol(图形窗口句柄,属性1,属性值1,属性2,属性值2,…)
# P; ?1 _- A/ l! I& m, G; f# M) B0 R. t' M% ]2 c. B+ y) r9 M7 x
其中,属性及其取值决定了控件的特征。若省略图形窗口句柄,默认4 K* I9 f/ h4 ]
在当前图形窗口建立控件对象。
" C& K" i! C- ^( }* n- F6 i1 u0 h. g% K) |
(3) 控件对象的基本控制属性  G0 G& w: L  h& v( D
Style属性:定义控件对象的类型,例如‘pushbutton’表示按钮对 象,'edit’表示编辑框,等等。
, e1 f* W; E) Y0 r7 }String属性:定义控件对象的说明文字。- @6 ^8 V* v4 r7 q! V: y  ^
Tag属性:标识控件对象。" C" }, k2 E9 Y% d- w+ n: V3 p
Enable属性:控制控件对象是否可用。
  _. e* O1 N/ B$ n% R! kPosition属性:定义控件对象的位置,其取值形式为[x,y,w,h]。
- Q+ \; O! E5 T+ TCallback属性:其属性值是描述命令的字符串或函数句柄,当选中控 件时,系统将自动执行字符串描述的命令或调用句柄所代表的函数, 实施相关操作。$ w" O* U; U+ A6 @5 \" `
(4)回调函数
) N7 e& X; L1 O. H! A2 k( B回调函数定义对象怎样处理信息并响应某事件。0 U9 i6 A. `6 ^& [# R$ r9 x/ x
回调函数的定义格式:, j) s. M" f7 @5 W2 ^9 n9 c/ u
function 函数名(source, eventdata) …… end9 h; L6 D* J; U
其中,参数source是发生事件的源控件对象句柄,eventdata存储事件数据。/ l# U# a! C% o
(5)例子1+ r5 u6 f# m1 C$ N
例1 在图形窗口中建立三个按钮对象,当单击按钮时分别绘制正弦曲 线、显示或隐藏坐标轴的网格、清除坐标轴的图形。
& K" r3 Q; t0 f, Q( _) d/ Y/ `% y& q7 V* \8 b3 \/ @
. O$ T7 g) q* Q

) m7 H9 M! v' Q9 g/ \+ s0 b菜单对象) S" S7 I0 o/ k  g0 z
(1)建立菜单对象
2 A! l" P: u4 S2 Juimenu函数用于创建、设置、修改菜单。
5 j* q0 [1 n. k4 b3 ^建立一级菜单项的函数调用格式为:" A  L6 k/ B3 O2 h! K9 F( d+ X
一级菜单项句柄=uimenu(图形窗口句柄,属性,属性值1,属性2,属性值2,…)/ l' f  o, S) \! J" G
建立子菜单项的函数调用格式为:/ Q$ m. M- n2 g+ i  t9 @. H4 v+ z
子菜单项句柄=uimenu(上级菜单项句柄,属性1,属性值1,属性2,属性值2,…)) k) g/ u# O; D) s; P. v) l

5 ]% N: h# \) T; c3 S7 K; ](2)菜单属性
" g7 ]5 K: K" S# W: P6 @Label属性:定义菜单项的名字。2 H2 g/ X) E6 c5 B4 w
Accelerator属性:定义菜单项的快捷键。
3 ~4 w) u+ A6 T, s* e* jChecked属性:指示菜单项是否已选中。
5 |& B6 Z+ n! F% b& b$ m- HEnable属性:控制菜单项的可选择性。, t/ ?/ h" s& ^, f+ C9 ~' s0 V3 ~
Separator属性:在菜单项上方添加一条分隔线。
! z' d& U+ \* o/ {. W4 D! p' U
5 [/ v2 Y+ y4 Q3 a/ k(3)例子2- z3 O3 T4 A) ]( P8 O6 {  w8 b
在例1的界面中添加“图形选项”菜单项,其中包括一个二级菜 单项“线型”,其下又有3个子菜单项,分别为“实线”、“虚线”、 “双划线”。- W( W$ [9 t( E/ [% a

: ~: E3 g) N; X7 W) h, Y3 \首先运行例1的程序生成图形界面,再 运行例2程序,在界面中添加“图形选 项”菜单项,这时“线型”菜单项不 可用,单击“绘图”按钮绘制正弦函 数曲线后“线型”菜单项变为可用, 这时可以改变线型,例如双划线.
( e2 G5 Q5 q9 H# Q( g) F
( ~2 Y- J! j; x: s( D. n  ~# f2 w1 o& y: X
/ [" T9 ~4 U1 A  I3 {( b9 k1 a
本人觉得一些常用的函数# D3 T6 i$ G5 L. k, T, z1 A, w

, |' }. A5 V" Q' K: J3 vgcf返回当前Figure对象的句柄值4 M" I" ?% Z* `4 s- F! L0 Y
) d. W& X" [7 ~  p/ {! C
h = findobj(‘PropertyName’,PropertyValue,…)
. O2 ?, E" w- \: T5 u1 f返回所有属性名为‘PropertyName’,属性值为’PropertyValue’的图形对象的句柄。可以指定多个属性/值对
) k- M* \0 Y) y. }8 c% n
4 x$ e8 G  E4 e8 \' n7 f在当前坐标下查找所有直线对象:' v+ J6 ^. l$ b( b
h = findobj(gca,‘Type’,‘line’)  %gca为当前坐标的句柄
7 B% j5 Q" ?0 r/ z& p/ d! u7 V: F8 Y
matlab自带用户界面设计工具GUIDE
* e: I! K1 M& l  y) wGUIDE:Graphical User Interface Development Environment/ [$ ~# Z( J5 C0 H4 F
& c; _/ k5 y( L5 G" Q% L5 w8 B( i# h
图形界面设计窗口) S/ ]2 s0 d5 |

& _# }3 X& W6 @(1)打开GUIDE
  t+ `/ H: C4 g0 p% P在MATLAB命令行窗口输入guide命令。  n* w. I4 g& b& {2 I1 D" s( T
在MATLAB主窗口中选择“主页”选项卡,单击工具栏的“新建”命令按6 h2 ]. v* @& L9 G. M/ I- P) ?- T
钮,再选择“应用程序”下的GUIDE命令
; V0 O0 F2 k3 p  c5 i' H' H
: R: l" J, `; q" D# o(2)图形用户界面设计模板1 t( [1 g  Q/ w( c9 p
Blank GUI (Default)
. t; ?) p0 Q: Q' C& jGUI with Uicontrols5 p# v5 P( W8 t4 _3 @2 x3 b
GUI with Axes and Menu
. M$ j1 x$ L( T" T5 f* c/ e. _Modal Question Dialog" h( Q& A6 \  _7 M" v  u
, |+ _& G- h2 x9 q9 _) y
(3)图形用户界面设计窗口
2 E+ F) G' c2 [: p: g0 S9 B5 g图形用户界面设计窗口由菜单栏、 工具栏、组件选项板、界面设计区、状 态栏等部分组成。/ _7 Y( s* ?$ v% D. F
( \, L+ ~2 x7 q) |! S
(4)图形用户界面设计工具, f3 }  y+ i$ Q6 `7 r
对齐对象工具
; C" v  T$ b" p* C6 ^# Y  b菜单编辑器
( g) a# Q6 ]- LTab键顺序编辑器. y: j- z  ?8 x
工具栏编辑器) K- W$ {/ v5 n
代码编辑器$ n8 T, h0 L- Q! q
对象属性检查器
( B' D2 U1 d8 P' N& E对象浏览器
" ?# Z4 q/ Q8 E1 v7 R8 }
5 D4 i$ r1 s9 X对象属性检查器是用于检查/修改对象属性的工具。
1 b: B* P! C  ^0 a6 s/ _1 @% r8 _7 I+ ]1 p7 ?
菜单编辑器
1 E2 {9 Q. s+ T. ?- z菜单编辑器构成
1 w6 k6 F( J/ L' t. t8 k' @工具栏
. C3 R* V2 c' j2 b菜单列表
2 \# w/ h: a3 E& D& }4 a菜单属性面板' F6 t( |9 J' O9 S' x2 V- ~  H: e+ Q; J
图形窗口的MenuBar属性
# b* P- ?# w1 P% B+ ?8 o' K1 T  D! C- @6 ofigure
. j/ ?1 Y" Z0 x' Lnone# z! Q+ I- m7 z4 X0 R
菜单编辑器 添加自定义菜单
/ N, r' ~: d$ D& x新建菜单 新建菜单项 设置菜单项属性
( [* y' r  \9 A8 Z0 n6 r
: v* N) E; {  P( D" g) f对象浏览器
0 q/ a) A  E; D/ v2 j对象浏览器用于查看图形对象和展示界面的组织架构
/ B! w2 ]: A7 R6 F3 {9 P: ?. b. J+ \# @* |. g1 A" u8 ^) z
回调属性与回调函数
! E0 `& c  w2 ]6 ]% M' T(1)回调属性% D. n- c8 q$ D3 Q" B/ ]
Callback属性:按钮类控件和菜单项的单击事件的默认回调属性。" o# m/ [4 O6 P; ^6 p
CreateFcn属性:定义创建图形对象的响应。: u6 Z3 C- U3 A: r0 ~
DeleteFcn属性:定义取消图形对象的响应。6 G+ v1 _; K# a3 f
ButtonDownFcn属性:定义单击鼠标键按下的响应。( B; `/ P2 s# C6 k0 @( N: x3 K
KeyPressFcn属性:定义键盘键按下的响应。
3 }# c8 Y3 r( k! J5 QSelectionChangeFcn属性:定义改变选项的响应3 F" K% a/ {8 z* r/ `

' w7 \2 e1 j! Z& }; D$ ](2)回调函数框架
9 G0 W8 ]$ F4 {1 N) b& Sfunction 对象标识_Callback(hObject, eventdata, handles)
, F' u! u( {; O+ D) h其中,hObject为发生事件的源控件,eventdata为事件数据,handles保( `# G* e' R) l6 U7 Q+ H
存图形界面中所有对象的句柄。, r7 ~* G$ X6 O; f
; T% d( C# \" X2 w% m$ A

' E- m' a* o. ?+ u2 f$ T* @0 F3 V" L' d5 v# b, o

作者: xixihahaheihei    时间: 2019-12-18 17:39
赞赞赞
作者: relchhiclty    时间: 2019-12-20 18:17
学习了




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2