|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
GUI 是实现人机交互的中介,具有强大的功能,可以完成许多复杂的程序模块。想熟练/ v1 n3 k3 Y8 N/ i* O; e
快捷地使用它,需要具有一定的知识储备和必要的经验技巧。
5 z: `6 O% y* N: r; b1 Q( w) i6 r
: B+ E# Y/ [( Q关于 MATLAB GUI 的入门,推荐使用 MATLAB 的帮助文档,仔细研读 HELP 是最好的办法。' G9 ?& u# z1 Z8 d. d, c. r3 n
需要了解函数句柄等必要基础知识,熟悉各控件对象的基本属性和方法操作,知晓不同控件/ d7 r% Y; x, M
的合适使用条件及其特有的功能,并会采用不同的使用手段来实现相同功能的设计。" T; H* V1 R" g p( ]
' H8 A% g9 v" C: n3 E: a. [0 M1 N2 w+ J
(1)菜单和控件
B/ M* Q: S4 g4 f3 |需要详细掌握菜单和控件。菜单很简单,就是弄清除菜单之间的关系和如何调用就可以。$ t M4 `" {' P
控件的使用主要是用好CreateFcn 和Callback 属性。CreateFcn 中的语句就是在程序运行时,) j% P$ |- Y F' R
就立即执行脚本。如果希望界面可控,那么最好用 Callback 属性。在相应控件下,添加相应, _6 S$ D; r# j5 d6 ?. c
的脚本就可以实现比较复杂计算绘图等功能。
% S% r) s+ R9 y* V3 y1 A% B
5 D# J% d6 _, D4 j8 }( o$ s. k: N& h. _3 T- ^
(2)事件处理
& S! C: [5 R5 @; F0 l3 e1 \需要重点掌握事件处理,理解函数回调的机理以及不同条件下回调的处理。使用独立回2 |; a8 J8 K9 n; B' _; M
调函数技术,可以让复杂的回调变得简单;全局变量是在函数的公共区说明,整个函数以及
: `9 o& v1 w% P) _$ b6 V5 e2 }: x所有对函数的递归调用都可以利用全局变量;同属性'Tag'一样,'UserData'属性可在函数之0 \5 F, p% ?* n: B0 i9 F2 i& d
间或递归函数的不同部分之间传递信息。如果需要多个变量,这些变量可以在一个容易辨识* u4 N# D: x0 z5 g) L5 q' ^
的对象的属性'UsetData'中传递;通过函数句柄来定义回调实现数据的访问和方法的实现。7 P3 _, s8 [# o1 j9 G, R
& r6 E. J! p R' T& H5 f) ~: d
5 n6 }) d* h' S# f# n% P(3)GUI 设计的原则和步骤3 s( G7 P9 e F+ v1 M* ^4 g& O
在设计 GUI 的时候,要注意一定的原则和步骤,分析界面所要求实现的主要功能,明确
( y; O' B# C. t* x7 Y. b设计任务,构思草图,设计界面和属性,编写对象的相应代码,实现控件的交互调用。( p; g7 y/ [- e. g* Q
另外对于 GUI 在具体学科的应用,其学科的知识是基础,要掌握具体学科的相关知识的5 l4 K! Z; f0 i; c3 p2 F
原理后,并用代码来实现,才能很好地结合 MATLAB 进行 GUI 编程。/ n4 \1 a( B% ]6 h' ~3 [" {
0 Q7 {! a) V9 K z6 O ?
9 ~2 f$ j# d4 G" Q7 V(4)GUI 实现方式的选择: F( z/ E/ r n8 M! a
最后考虑的问题是实现方式的选择:GUIDE 还是全脚本?MATLAB 自带的 GUI 设计工具" z* j/ i2 {" {3 l. |% j) W7 T
GUIDE 的好处就是非常容易入手,风格很像 VB,相关的控件可以随便拖来用,它们的位置和% e$ X+ N- U5 @2 j' I/ t, f; {# ^
大小也可以像拖 windows 一样方便。但是 GUIDE 生成的是一个 fig 文件,它同时还会生成一
) j2 G; N* @' x- M6 W个包含了 fig 中放置的控件的相关回调函数的 m 脚本。这两个文件照理说是互相影响的,但4 B. y+ r" Z$ O7 x8 i- r% V, b
是当你改动了其中一个文件的内容,比如在 fig 中删掉一个原来的控件,但 m 脚本中对应的6 h7 k7 k- z8 T; e( } t
该控件的回调函数却仍然存在,虽说回调函数是空的,没什么关系,但破坏了程序架构的美
8 D+ A- U8 m+ B9 ?9 m5 Z9 o感,需要手动删掉这些代码。同时 GUIDE 还没有实现创建 uitoolbox 和所有 axes 的子对象。5 _' y) T0 k( D* j8 |
用全脚本实现最好入门就是读代码,MATLAB 就自带的 demo,包括按钮、单选按钮、框8 B) N& Q" k0 J6 {
架、复选框、文本标签、编辑文本框、滑动条、下拉菜单、列表框和双位按钮等的使用,顺
$ v' }0 h* c1 S! _. ?! r9 u便还能了解 MATLAB 里句柄函数的参数传递,就可以更直观而快速地掌握 GUI 设计的技巧了。
+ j* s/ q( q, @- b: k% W使用 M 文件代码可以重复使用,可以生成非常复杂的界面,可以实现组件,创建对象,方便3 e8 j8 M: F7 a+ z4 R' b) B
地在 handle 中存取数据,将创建对象代码与动作执行代码很好地结合起来。% w1 j3 ~5 S2 j0 }$ S
|
|