|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
GUI 是实现人机交互的中介,具有强大的功能,可以完成许多复杂的程序模块。想熟练
8 {4 O3 |7 G/ a5 r+ c0 P( V快捷地使用它,需要具有一定的知识储备和必要的经验技巧。
3 _: o% q3 r3 B7 W
: ~% C, Z# ?4 l- M$ U$ U) ]: T4 l1 F9 U7 \, p* J9 l/ J8 G. g. q4 A/ m
关于 MATLAB GUI 的入门,推荐使用 MATLAB 的帮助文档,仔细研读 HELP 是最好的办法。
6 U1 M- H4 h6 B0 R2 F. h需要了解函数句柄等必要基础知识,熟悉各控件对象的基本属性和方法操作,知晓不同控件; M: V8 W* i2 h4 D) C8 ?9 `
的合适使用条件及其特有的功能,并会采用不同的使用手段来实现相同功能的设计。
; d- `1 k! j1 _* ?# D9 q5 I& r/ V% @* u, m5 H u
1 a5 ]+ }2 G5 _2 u! b6 ?(1)菜单和控件
! e* \; ~9 n( q. }# p0 Q* c9 a3 W需要详细掌握菜单和控件。菜单很简单,就是弄清除菜单之间的关系和如何调用就可以。
) g" E0 Z8 G9 x% m: U控件的使用主要是用好CreateFcn 和Callback 属性。CreateFcn 中的语句就是在程序运行时,
% v P5 ]' g; E; A) {$ k就立即执行脚本。如果希望界面可控,那么最好用 Callback 属性。在相应控件下,添加相应+ m1 Q" P6 E& S5 r+ m4 O" T
的脚本就可以实现比较复杂计算绘图等功能。
8 t+ Z. T) L- J4 ]# u2 R+ y9 G, p0 {! p' `2 H
; Y ~: I( ]- f; o5 X- T5 M4 \2 P(2)事件处理0 _& z7 ?) h7 Z* w, L0 x* x
需要重点掌握事件处理,理解函数回调的机理以及不同条件下回调的处理。使用独立回& k* V; u1 B0 h2 d! h# ]3 {& }
调函数技术,可以让复杂的回调变得简单;全局变量是在函数的公共区说明,整个函数以及
' O+ _' k7 A) ~ i, P: J7 d所有对函数的递归调用都可以利用全局变量;同属性'Tag'一样,'UserData'属性可在函数之- H: Q9 j+ w" o1 B, `. f0 K0 ^/ t$ m
间或递归函数的不同部分之间传递信息。如果需要多个变量,这些变量可以在一个容易辨识
, G0 _3 e) n) T' f) H, _( J的对象的属性'UsetData'中传递;通过函数句柄来定义回调实现数据的访问和方法的实现。
3 \! b! r8 N1 h k) y$ u8 Q) |. f2 d" n* t( i$ y0 s) |' M. b: n
+ x- @; s: e$ A% `+ v(3)GUI 设计的原则和步骤0 {; A; G% h' a1 |9 Y" M
在设计 GUI 的时候,要注意一定的原则和步骤,分析界面所要求实现的主要功能,明确
* o; F0 X2 k$ L" b ~设计任务,构思草图,设计界面和属性,编写对象的相应代码,实现控件的交互调用。
- T) {2 E0 ^( K' r6 T* e另外对于 GUI 在具体学科的应用,其学科的知识是基础,要掌握具体学科的相关知识的3 F0 m3 I) }) y4 l% h
原理后,并用代码来实现,才能很好地结合 MATLAB 进行 GUI 编程。
4 m% y0 k6 {$ r3 \' ]1 p0 M* r" h
2 v+ l- P7 k& N. \' S
(4)GUI 实现方式的选择' q& @$ L0 b% C# M. a
最后考虑的问题是实现方式的选择:GUIDE 还是全脚本?MATLAB 自带的 GUI 设计工具
9 u) F! _ ?& p6 PGUIDE 的好处就是非常容易入手,风格很像 VB,相关的控件可以随便拖来用,它们的位置和4 g$ B' Z2 T; W3 u5 K
大小也可以像拖 windows 一样方便。但是 GUIDE 生成的是一个 fig 文件,它同时还会生成一" G, ~. W% L5 U- A5 R; C5 j
个包含了 fig 中放置的控件的相关回调函数的 m 脚本。这两个文件照理说是互相影响的,但
. e* y/ [8 y# p( ~是当你改动了其中一个文件的内容,比如在 fig 中删掉一个原来的控件,但 m 脚本中对应的& D# d' _3 x0 M$ e3 W
该控件的回调函数却仍然存在,虽说回调函数是空的,没什么关系,但破坏了程序架构的美% {( l% y& i1 y1 A
感,需要手动删掉这些代码。同时 GUIDE 还没有实现创建 uitoolbox 和所有 axes 的子对象。
x9 M) q# g X% H2 _9 Q) L用全脚本实现最好入门就是读代码,MATLAB 就自带的 demo,包括按钮、单选按钮、框
: r+ d+ j* c+ z5 A架、复选框、文本标签、编辑文本框、滑动条、下拉菜单、列表框和双位按钮等的使用,顺7 |. M4 Q+ z0 }/ R% i# p7 O
便还能了解 MATLAB 里句柄函数的参数传递,就可以更直观而快速地掌握 GUI 设计的技巧了。7 C8 s2 q8 J! Y" B
使用 M 文件代码可以重复使用,可以生成非常复杂的界面,可以实现组件,创建对象,方便
f( y' g" d- U4 K7 z地在 handle 中存取数据,将创建对象代码与动作执行代码很好地结合起来。$ h% s/ Y; F$ l
|
|