EDA365电子论坛网

标题: MATLAB GUI 的使用经验与技巧 [打印本页]

作者: abcde1234    时间: 2018-11-1 14:12
标题: MATLAB GUI 的使用经验与技巧
GUI 是实现人机交互的中介,具有强大的功能,可以完成许多复杂的程序模块。想熟练
, ~: t0 M. I- O4 q4 {. h0 Q快捷地使用它,需要具有一定的知识储备和必要的经验技巧。; N2 l0 ~& i# S; A: W2 f

0 G$ J5 X1 s% e  @. V; U6 e* l

+ X) G% s. y$ t关于 MATLAB GUI 的入门,推荐使用 MATLAB 的帮助文档,仔细研读 HELP 是最好的办法。" O6 @2 p2 w( H' Z
需要了解函数句柄等必要基础知识,熟悉各控件对象的基本属性和方法操作,知晓不同控件8 l6 K3 l$ M4 H& h  k3 i: J) F
的合适使用条件及其特有的功能,并会采用不同的使用手段来实现相同功能的设计。
: U  ]: _) s5 Q. T
& q1 J5 V# n. b* C- c

/ d0 l: J* @. K! {(1)菜单和控件
- d  m' `9 q! ]! u5 E% p5 ^- _需要详细掌握菜单和控件。菜单很简单,就是弄清除菜单之间的关系和如何调用就可以。  w6 t! B, Y7 K( c1 P  C) F* J
控件的使用主要是用好CreateFcn 和Callback 属性。CreateFcn 中的语句就是在程序运行时,
0 r: ]7 c7 @7 {7 t& B% I0 k! Z就立即执行脚本。如果希望界面可控,那么最好用 Callback 属性。在相应控件下,添加相应
0 L: d( H0 i' a! @  M的脚本就可以实现比较复杂计算绘图等功能。
( W# R2 o9 L7 r. ^
* O1 Y- \# q' E/ E- t4 x
! @1 @+ M) L+ E: O
(2)事件处理' J# K+ X8 }* Y% d% v. \& \
需要重点掌握事件处理,理解函数回调的机理以及不同条件下回调的处理。使用独立回0 X4 q' b9 K3 a! {2 V
调函数技术,可以让复杂的回调变得简单;全局变量是在函数的公共区说明,整个函数以及/ `  d( R8 U- T, R; ^- U: `
所有对函数的递归调用都可以利用全局变量;同属性'Tag'一样,'UserData'属性可在函数之
% M4 A7 d% _1 g6 W$ t间或递归函数的不同部分之间传递信息。如果需要多个变量,这些变量可以在一个容易辨识7 j* P. Z' u+ @7 U
的对象的属性'UsetData'中传递;通过函数句柄来定义回调实现数据的访问和方法的实现。
9 ?8 W' x8 m$ z) V5 m. m
3 x2 S0 ]9 G3 Q0 H5 b, L

$ V6 t1 q: h: l(3)GUI 设计的原则和步骤
4 t: G! E" p1 M6 {  o* W$ f, D在设计 GUI 的时候,要注意一定的原则和步骤,分析界面所要求实现的主要功能,明确
% W6 l3 A7 v: E  F( F9 @设计任务,构思草图,设计界面和属性,编写对象的相应代码,实现控件的交互调用。+ S; J4 r+ Y+ t3 t- h" j
另外对于 GUI 在具体学科的应用,其学科的知识是基础,要掌握具体学科的相关知识的2 {, y3 k) \# J3 W
原理后,并用代码来实现,才能很好地结合 MATLAB 进行 GUI 编程。1 }8 u7 w% u4 b- J0 v2 \
9 R0 g, _5 m) T0 F% `) n0 U

. Q! R5 R2 h+ a6 n5 `, l& T(4)GUI 实现方式的选择
3 E& y( s/ ~/ q最后考虑的问题是实现方式的选择:GUIDE 还是全脚本?MATLAB 自带的 GUI 设计工具
' }5 g: U; f* u# pGUIDE 的好处就是非常容易入手,风格很像 VB,相关的控件可以随便拖来用,它们的位置和
+ u7 _7 m# I- W! N( U大小也可以像拖 windows 一样方便。但是 GUIDE 生成的是一个 fig 文件,它同时还会生成一# D! u( X7 r' [; D; R7 p
个包含了 fig 中放置的控件的相关回调函数的 m 脚本。这两个文件照理说是互相影响的,但
; g; W! t8 D8 @+ ^是当你改动了其中一个文件的内容,比如在 fig 中删掉一个原来的控件,但 m 脚本中对应的9 O* t- W4 d4 P
该控件的回调函数却仍然存在,虽说回调函数是空的,没什么关系,但破坏了程序架构的美- ?+ p2 l4 p/ h  S& ?
感,需要手动删掉这些代码。同时 GUIDE 还没有实现创建 uitoolbox 和所有 axes 的子对象。
. L; _, f8 s$ W' |& {用全脚本实现最好入门就是读代码,MATLAB 就自带的 demo,包括按钮、单选按钮、框/ v8 o, P0 Z) x7 `/ M
架、复选框、文本标签、编辑文本框、滑动条、下拉菜单、列表框和双位按钮等的使用,顺' E: x& ~6 b- a) Y2 N' [! Q
便还能了解 MATLAB 里句柄函数的参数传递,就可以更直观而快速地掌握 GUI 设计的技巧了。
1 C' b) Q' H2 _7 Q使用 M 文件代码可以重复使用,可以生成非常复杂的界面,可以实现组件,创建对象,方便; |; H  k0 G# d' s* e% i" y5 v& ^
地在 handle 中存取数据,将创建对象代码与动作执行代码很好地结合起来。
8 P3 ?3 f9 b; _, n- l0 x
作者: mm58690    时间: 2018-11-1 16:30
感谢分享




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