图形用户界面(GUI)

上传人:san****019 文档编号:22778996 上传时间:2021-05-31 格式:PPT 页数:22 大小:762.50KB
返回 下载 相关 举报
图形用户界面(GUI)_第1页
第1页 / 共22页
图形用户界面(GUI)_第2页
第2页 / 共22页
图形用户界面(GUI)_第3页
第3页 / 共22页
点击查看更多>>
资源描述
技术凝聚实力专业创新出版第 17章 图 形 用 户 界 面 ( GUI)l 用 户 界 面 即 是 用 户 与 硬 件 、 软 件 交 互 、 通 信 的 中 介 , 通 过 用 户 界 面 ,用 户 向 软 件 发 出 执 行 某 项 功 能 的 指 令 , 该 软 件 利 用 硬 件 、 其 他 软 件执 行 该 指 令 , 并 以 图 形 或 文 字 的 形 式 将 执 行 结 果 返 回 给 用 户 。 早 期的 用 户 界 面 大 多 是 基 于 文 字 的 形 式 , 最 典 型 的 莫 过 于 DOS系 统 。 用户 输 入 某 一 指 令 , 系 统 通 过 调 用 软 件 、 硬 件 资 源 执 行 该 指 令 , 并 以文 字 的 形 式 返 回 执 行 结 果 。 现 今 , 对 大 多 数 用 户 来 说 , DOS( 及 类似 的 用 户 界 面 系 统 ) 似 乎 是 一 个 讳 深 莫 测 的 世 界 , 不 仅 单 调 乏 味 ,而 且 工 作 效 率 也 很 低 ; 人 们 更 青 睐 于 一 种 所 见 即 所 得 的 用 户 界 面 系 统 , 即 图 形 用 户 界 面 ( Graphical User Interface, 简 称 GUI) 。图 形 用 户 界 面 是 由 窗 口 、 光 标 、 按 键 、 菜 单 、 文 字 等 元 素 构 成 的 用户 视 窗 , 用 户 通 过 对 这 些 元 素 的 点 击 、 选 中 等 就 能 很 轻 松 地 完 成 某项 功 能 , 这 种 所 见 即 所 得 的 特 性 尤 其 在 图 形 绘 制 等 方 面 具 有 很 好 的应 用 。 技术凝聚实力专业创新出版17.1 两 种 GUI设 计 方 式l 图 形 用 户 界 面 程 序 可 以 分 为 两 个 相 对 较 独 立 的 子 模 块 , 即 界 面 模 块和 工 作 模 块 , 界 面 模 块 接 受 用 户 的 输 入 , 并 将 输 入 数 据 和 操 作 请 求提 交 给 工 作 模 块 ; 而 工 作 模 块 通 常 在 后 台 完 成 数 据 处 理 任 务 , 并 将结 果 提 交 到 界 面 。 相 应 地 , GUI程 序 设 计 可 以 分 为 界 面 设 计 和 程 序设 计 两 部 分 。 l 本 节 首 先 介 绍 GUI的 界 面 元 素 及 界 面 对 象 层 次 结 构 , 这 是 GUI界 面 设计 的 基 础 ; 第 17.1.2节 讨 论 回 调 函 数 , 这 是 GUI程 序 设 计 的 主 要 部分 。 依 据 GUI界 面 设 计 方 式 的 不 同 , 本 节 将 分 别 讨 论 手 工 代 码 式 和GUIDE式 两 种 GUI程 序 设 计 方 式 。 鉴 于 GUIDE式 简 便 、 快 捷 、 良 好 的所 见 即 所 得 特 性 , 本 章 后 文 中 以 GUIDE式 为 主 讨 论 GUIDE程 序 设 计 。 技术凝聚实力专业创新出版17.1.1 GUI对 象 及 层 次 结 构l 图 形 用 户 界 面 程 序 的 界 面 部 分 由 各 种 类 型 的 图 形 对 象 组 成 , 如 窗 口 、 菜 单 、按 钮 等 , 图 是 一 个 MATLAB GUI程 序 的 简 单 例 子 。l MATLAB的 图 形 对 象 是 MATLAB用 于 显 示 数 据 的 基 本 元 素 , 每 个 图 形 对 象 都 有一 个 唯 一 惟 一 的 ID, 称 之 为 句 柄 ( handle) , 因 此 MATLAB图 形 对 象 也 称 为句 柄 图 形 对 象 。 用 户 可 以 通 过 图 形 句 柄 查 询 或 设 置 对 象 的 属 性 , 也 可 以 经由 图 形 句 柄 改 变 图 形 对 象 的 外 观 。 关 于 句 柄 图 像 对 象 相 关 知 识 在 第 14章 已有 所 介 绍 , 这 里 不 再 赘 述 。 技术凝聚实力专业创新出版17.1.2 回 调 函 数l GUI程 序 完 成 初 始 化 之 后 , 其 工 作 流 程 大 致 如 下 : 用 户 通 过 操 作 某个 界 面 对 象 ( 如 单 击 图 17.1中 的 Resample按 钮 ) 向 GUI程 序 发 出 任务 请 求 ; MATLAB自 动 调 用 该 界 面 对 象 的 回 调 函 数 , 响 应 用 户 请 求 并以 某 种 形 式 返 回 执 行 结 果 。 l 这 里 有 必 要 澄 清 一 个 问 题 , 即 回 调 函 数 是 用 户 操 作 触 发 , 但 由MATLAB系 统 调 用 ; 用 户 不 需 要 也 不 应 当 直 接 调 用 回 调 函 数 , 用 户 只需 关 注 回 调 函 数 本 身 。 用 户 也 许 会 对 MATLAB系 统 如 何 启 动 回 调 函 数心 存 疑 问 , 实 际 上 回 调 函 数 是 界 面 对 象 的 一 个 属 性 , MATLAB系 统 通过 界 面 对 象 的 句 柄 查 询 到 回 调 函 数 的 句 柄 , 从 而 实 现 对 回 调 函 数 的调 用 。 技术凝聚实力专业创新出版17.1.3 手 工 代 码 式 GUI程 序l 手 工 代 码 式 的 GUI程 序 要 求 用 户 自 行 编 码 创 建 各 界 面 对 象 , 并 设 置 其 属 性 。 下 面 先介 绍 一 个 简 单 的 例 子 , 其 目 的 是 使 读 者 对 MATLAB GUI程 序 的 内 部 结 构 有 一 个 更 加 直观 、 清 醒 的 认 识 。 总 结 GUI程 序 设 计 的 基 本 步 骤 如 下 。 l 确 定 用 户 需 求 , 明 确 GUI程 序 的 功 能 : 用 户 需 要 程 序 完 成 什 么 样 的 任 务 ? 用 户 如 何向 程 序 发 出 任 务 请 求 ? 程 序 如 何 将 结 果 返 回 给 用 户 ? l 绘 出 GUI的 布 局 ( Layout) 草 图 。 GUI界 面 设 计 , 界 面 设 计 要 着 重 考 虑 到 界 面 的 美 观 、简 洁 , 可 操 作 性 强 。l GUI程 序 设 计 , 主 要 是 回 调 函 数 的 设 计 , 包 括 回 调 函 数 与 界 面 的 通 信 及 回 调 函 数 之间 的 数 据 共 享 等 , 这 是 GUI程 序 设 计 的 主 要 难 点 之 一 。l 验 证 和 调 试 GUI。l 以 上 GUI程 序 设 计 的 步 骤 通 常 不 能 一 蹴 而 就 , 往 往 需 要 数 次 的 循 环 迭 代 才 能 设 计 出优 秀 的 GUI 程 序 。 技术凝聚实力专业创新出版17.1.4 GUIDE式 GUI程 序l 通 过 前 面 的 例 子 可 以 看 出 , 手 工 代 码 式 GUI程 序 设 计 方 法 的 缺 点 在 于 界 面 设 计 不 具有 直 观 性 。 另 外 回 调 函 数 的 设 计 也 很 烦 琐 , 为 了 实 现 数 据 的 共 享 , 经 常 要 用 到 大 量的 全 局 变 量 , 这 些 全 局 变 量 不 利 于 程 序 的 组 织 和 扩 展 。 l 用 户 也 许 希 望 像 在 VC、 VB中 那 样 , 只 需 通 过 鼠 标 把 需 要 的 对 象 拖 曳 到 目 的 位 置 , 并设 置 相 关 的 属 性 就 能 得 到 一 个 设 计 良 好 的 GUI界 面 , 这 正 是 下 面 将 要 介 绍 的 GUIDE。为 此 , 下 面 通 过 一 个 简 单 的 例 子 介 绍 GUIDE式 的 GUI程 序 设 计 方 法 , 其 目 的 主 要 是 了解 其 设 计 的 主 体 思 路 , 更 详 细 的 内 容 将 在 本 章 后 续 内 容 中 讨 论 。 技术凝聚实力专业创新出版17.1.5 GUIDE界 面 环 境l 本 小 节 在 前 文 的 基 础 上 进 一 步 介 绍 GUIDE, 主 要 是 GUI界 面 编 辑 环 境 , 并 简要 介 绍 GUI M文 件 编 辑 器 的 相 关 操 作 。l GUIDE创 建 的 GUI程 序 由 两 个 文 件 组 成 : l FIG文 件 , 即 用 户 界 面 文 件 ;l M文 件 , 保 存 了 GUI程 序 所 有 的 代 码 , 用 户 所 有 的 编 码 工 作 都 在 该 文 件 中 完成 。 技术凝聚实力专业创新出版17.2 GUI界 面 设 计l 界 面 设 计 在 软 件 设 计 中 具 有 重 要 的 地 位 , 有 时界 面 的 好 坏 甚 至 决 定 了 软 件 的 命 运 , 对 图 形 用户 界 面 程 序 更 是 如 此 。 本 节 首 先 给 出 了 MATLAB GUI程 序 界 面 设 计 的 一 些 原 则 和 要 考 虑 的 主 要 问题 , 这 对 后 面 的 界 面 设 计 工 作 具 有 重 要 的 指 导意 义 ; 接 着 将 对 窗 口 、 轴 、 菜 单 、 控 件 等 界 面对 象 逐 一 进 行 详 细 介 绍 , 主 要 是 各 类 对 象 的 相关 属 性 。 技术凝聚实力专业创新出版17.2.1 界 面 设 计 原 则l 用 户 界 面 是 人 与 计 算 机 之 间 的 媒 介 , 用 户 通 过 用 户 界 面来 与 计 算 机 进 行 信 息 交 换 , 所 以 软 件 的 友 好 性 、 易 用 性对 于 软 件 系 统 至 关 重 要 。 用 户 界 面 设 计 的 最 高 原 则 应 该是 用 户 无 须 阅 读 操 作 手 册 就 知 道 如 何 使 用 软 件 。l 软 件 系 统 的 发 展 已 经 进 行 了 很 多 年 , 每 类 软 件 都 有 其 流行 的 界 面 风 格 和 设 计 惯 例 , 既 然 不 是 每 个 人 都 能 成 为 界面 大 师 , 那 么 作 者 认 为 东 施 效 颦 也 未 尝 不 是 一 个 有 效 的方 法 。 这 里 列 出 常 见 的 界 面 设 计 方 面 的 原 则 以 供 读 者 参考 , 相 信 这 些 原 则 对 读 者 在 设 计 用 户 界 面 方 面 能 有 所 借 鉴 。 技术凝聚实力专业创新出版17.2.2 窗 口 和 轴l 窗 口 是 GUI各 类 界 面 对 象 的 容 器 , 是 任 何 GUI程 序 界 面 不可 缺 少 的 元 素 。 从 对 象 继 承 关 系 看 , 各 类 界 面 对 象 、 轴 、菜 单 都 是 窗 口 对 象 的 子 类 , 是 一 些 特 殊 类 型 的 窗 口 , 表列 出 了 窗 口 对 象 常 用 的 属 性 。 窗 口 常 用 属 性属 性 名 说 明Name 窗 口 标 题Position 窗 口 位 置 , 14行 向 量 , 单 位 为 像 素MenuBar 决 定 窗 口 是 否 包 含 菜 单 栏ToolBar 决 定 窗 口 是 否 包 含 工 具 栏UIContextMenu 决 定 窗 口 是 否 上 下 文 菜 单 Unit 窗 口 内 对 象 的 尺 寸 单 位 , 一 般 设 为 normalizedTag 窗 口 对 象 标 签 技术凝聚实力专业创新出版17.2.3 菜 单l 对 于 某 些 GUI程 序 , 菜 单 栏 是 必 需 的 。 关 于 菜 单 栏 的 设 计 , GUIDE已经 为 用 户 提 供 了 一 个 标 准 菜 单 , 用 户 可 以 在 该 标 准 菜 单 的 基 础 上 通过 新 增 和 修 改 菜 单 项 定 义 自 己 菜 单 。 表 列 出 了 菜 单 经 常 使 用 的 属 性 。 菜 单 常 用 属 性属 性 名 说 明Label 菜 单 项 标 题 属 性Accelerator 快 捷 键Tag 标 签 属 性Callback 回 调 函 数Sperator 上 面 是 否 有 分 隔 线 , On/OffChecked 菜 单 项 状 态 属 性 , On/Off, On时 菜 单 项 前 为 Enable 菜 单 项 是 否 可 用 , On/Off, 菜 单 不 可 用 时 为 灰 色Visible 是 否 可 见 属 性 , On/Off 技术凝聚实力专业创新出版17.2.4 控 件l 对 控 件 对 象 , 有 几 类 属 性 是 共 有 的 , 且 含 义 、 用 法 是 相 似 的 :l Style, 所 有 的 控 件 都 由 函 数 uicontrol创 建 , 因 此 在 创 建 控 件 时 需 要 传 入 控 件 类 型参 数 , 如 pushbutton、 Checkbox、 EditText等 ; l Tag, 关 于 标 签 属 性 的 含 义 及 其 用 法 , 前 文 已 有 介 绍 , 这 里 不 再 赘 述 。l Callback, 即 控 件 的 回 调 函 数 。l String, 该 属 性 包 含 了 对 象 的 一 些 文 字 描 述 , 对 按 钮 、 复 选 框 、 列 表 框 、 编 辑 框 和静 态 文 本 框 , String是 显 示 在 对 象 上 或 紧 邻 对 象 的 文 字 。l Value包 含 了 对 象 的 数 值 描 述 , 该 数 值 必 须 在 Min和 Max之 间 , 其 中 Min和 Max分 别 由Min、 Max属 性 决 定 。 对 无 线 电 按 钮 和 复 选 框 , Max、 Min为 1和 0。 当 无 线 电 按 钮 、 复选 框 被 选 中 时 , Value为 1, 否 则 为 0。 对 滚 动 条 , Value是 随 滚 动 条 位 置 变 化 的 数 值 。 技术凝聚实力专业创新出版17.3 GUI程 序 设 计l GUIDE创 建 的 GUI程 序 文 件 由 两 部 分 组 成 , 其 一 是 界 面 文件 , 保 存 了 GUI程 序 的 界 面 对 象 及 其 布 局 ; 其 二 是 GUI M文 件 , 保 存 了 GUI程 序 所 有 的 代 码 , 相 当 于 GUI程 序 的 引擎 , 用 户 所 有 的 编 码 工 作 都 在 该 文 件 中 完 成 , 其 中 主 要是 各 类 回 调 函 数 的 设 计 。 l 本 节 首 先 对 GUI M文 件 的 结 构 进 行 详 细 剖 析 , 从 而 了 解GUI程 序 的 大 致 框 架 ; 随 后 将 详 细 讨 论 GUIDE的 数 据 组 织方 式 , 这 对 理 解 GUI程 序 至 关 重 要 ; 本 节 最 后 要 对 窗 口对 象 、 轴 对 象 及 用 户 界 面 对 象 的 回 调 函 数 进 行 详 细 介 绍 。 技术凝聚实力专业创新出版17.3.1 GUI M文 件 结 构l GUI M文 件 包 含 了 所 有 运 行 GUI程 序 所 需 的 代 码 , 完 成 GUI界 面 设 计 之 后 , GUIDE会 自 动 产 生 相 应的 M文 件 框 架 。 虽 然 回 调 函 数 是 用 户 主 要 的 编 程 工 作 , 但 GUI M文 件 的 结 构 对 理 解 MATLAB GUI程序 的 本 质 及 进 一 步 的 程 序 设 计 是 非 常 重 要 的 。 下 面 以 第 17.1.4节 的 MyGuideGUI程 序 为 例 , 为 读者 逐 一 剖 析 GUI M文 件 结 构 。 l MyGuideGUI.m函 数 文 件 除 一 个 主 函 数 之 外 , 还 包 含 6个 子 函 数 , 可 以 将 这 些 函 数 ( 包 括 主 函 数 )分 为 以 下 四 类 :l GUI创 建 函 数 , 即 主 函 数 ( MyGuideGUI) , 用 于 创 建 GUI界 面 、 GUI程 序 实 例 等 , 用 户 可 以 在 该 函数 内 完 成 一 些 必 需 的 初 始 化 工 作 , 如 设 置 程 序 运 行 相 关 的 环 境 变 量 等 。 GUI创 建 函 数 可 以 返 回 程序 窗 口 的 句 柄 ;l 初 始 化 函 数 ( MyGuideGUI_OpeningFcn) , 完 成 程 序 的 初 始 化 工 作 , 如 GUI界 面 的 初 始 化 等 ;l 输 出 函 数 ( MyGuideGUI_OutputFcn) , 将 程 序 执 行 后 的 状 态 输 出 至 命 令 行 , 或 向 其 他 GUI程 序 传递 参 数 ; l 回 调 函 数 ( pushbuttonk_Callback) , 用 于 响 应 用 户 操 作 。 技术凝聚实力专业创新出版17.3.2 GUIDE的 数 据 组 织l GUIDE将 GUI程 序 分 成 多 个 子 函 数 , 子 函 数 有 各 自 的 函 数 空 间 , 因 此 回 调 函 数 之 间 的数 据 共 享 便 成 为 一 个 重 要 的 问 题 。 关 于 数 据 共 享 , 有 两 种 方 案 可 以 考 虑 , 其 一 是 利用 全 局 变 量 ; 其 二 是 通 过 函 数 的 参 数 传 递 。 由 于 回 调 函 数 之 间 不 能 直 接 调 用 , 因 此方 案 二 显 然 不 可 行 , 并 且 出 于 安 全 、 规 范 的 考 虑 , 回 调 函 数 的 接 口 ( 即 输 入 输 出 参数 的 格 式 ) 是 固 定 的 ; 方 案 一 利 用 自 定 义 的 全 局 变 量 能 够 实 现 数 据 共 享 , 但 容 易 破坏 程 序 的 结 构 。 但 现 在 GUIDE已 经 为 用 户 较 好 地 解 决 了 这 个 问 题 , GUIDE利 用 了handles这 一 全 局 构 架 变 量 , 不 仅 能 够 较 好 地 实 现 回 调 函 数 之 间 的 数 据 共 享 问 题 , 而 且 能 够 方 便 地 访 问 GUI界 面 数 据 。l 全 局 构 架 变 量 handles是 每 个 回 调 函 数 的 输 入 参 数 , 回 调 函 数 可 以 方 便 地 访 问handles的 每 个 数 据 。 另 外 , 回 调 函 数 还 可 以 通 过 下 面 的 方 法 向 其 他 回 调 函 数 传 递参 数 。 例 如 回 调 函 数 希 望 将 变 量 X共 享 给 其 他 函 数 , 首 先 需 要 将 X增 加 到 handles中 ,该 功 能 由 下 述 代 码 实 现 。l handles.current_data = X;l guidata(hObject,handles) 技术凝聚实力专业创新出版17.3.3 设 计 回 调 函 数l 本 小 节 首 先 介 绍 回 调 函 数 的 基 本 格 式 , 然 后 详细 讨 论 各 类 对 象 回 调 函 数 编 程 过 程 中 值 得 注 意的 问 题 。 回 调 函 数 的 一 般 格 式 如 下 :l function tag_Callback(hObject, eventdata, handles) 技术凝聚实力专业创新出版17.4 GUI应 用 实 例l 前 面 从 GUI界 面 设 计 、 程 序 设 计 两 个 方 面 分 别 对MATLAB GUI设 计 进 行 了 详 细 的 介 绍 , 内 容 相 对分 散 , 本 节 打 算 通 过 一 个 完 整 GUI设 计 实 例 将 前文 内 容 组 织 起 来 , 通 过 这 个 例 子 , 一 方 面 , 用户 可 以 学 习 GUI设 计 的 流 程 , 另 一 方 面 也 可 以 加深 对 前 文 内 容 的 理 解 。 技术凝聚实力专业创新出版17.4.1 分 析 用 户 需 求l 设 计 一 个 GUI程 序 , 该 程 序 具 备 以 下 功 能 : 用 户 随 机 输入 两 个 频 率 值 和 , 以 及 一 个 时 间 向 量 , GUI计 算 时 间 序列 , 并 对 该 时 间 序 列 作 傅 立 叶 分 析 ; 分 别 作 该 时 间 序 列的 时 域 波 形 图 和 频 域 波 形 图 。l 对 一 些 大 型 复 杂 程 序 , 设 计 者 往 往 需 要 对 用 户 的 需 求 进行 分 析 、 转 换 、 拆 分 , 从 而 得 到 一 组 由 软 件 语 言 描 述 、相 对 独 立 的 子 任 务 。 本 例 中 的 用 户 需 求 较 简 单 , 可 以 直接 跳 至 GUI界 面 设 计 阶 段 。 技术凝聚实力专业创新出版17.4.2 设 计 GUI界 面l GUI界 面 设 计 的 第 一 步 是 界 面 草 图 , 用 户 可 以 在 纸 板 上 作 出 界 面 的大 致 框 架 , 然 后 转 到 计 算 机 中 进 行 详 细 设 计 。 由 于 本 例 比 较 简 单 ,为 了 用 户 理 解 的 方 便 , 下 面 直 接 给 出 了 界 面 设 计 的 最 终 结 果 技术凝聚实力专业创新出版17.4.3 设 计 GUI程 序l 本 例 GUI程 序 的 大 致 执 行 流 程 如 下 : 用 户 输 入 频 率 值 f1、 f2和 时 间 向 量 t, 单 击 波 形分 析 按 钮 后 , 按 钮 的 回 调 函 数 启 动 , 显 示 时 序 波 形 和 频 率 波 形 。 因 此 , 本 例 程 序 设计 的 任 务 即 是 波 形 分 析 按 钮 回 调 函 数 的 编 码 。 右 键 单 击 波 形 分 析 按 钮 , 并 在 弹 出 的上 下 文 菜 单 中 选 择 菜 单 路 径 【 View CallbacksButtonDownFcn】 进 入 按 钮 的 回 调 函数 , 技术凝聚实力专业创新出版17.4.4 GUI程 序 发 布l GUIDE创 建 的 GUI程 序 由 Fig文 件 和 M文 件 组 成 , 用 户 可 以 将 GUI程 序打 包 为 单 个 的 M文 件 , 不 需 要 Fig文 件 的 支 持 。 在 GUI界 面 编 辑 窗 口中 选 择 菜 单 路 径 【 FileExport】 ,如 图 所 示 , 选 择 合 适 的 路 径 和 文件 名 并 保 存 。 技术凝聚实力专业创新出版17.5 小 结l 本 章 介 绍 了 MATLAB GUI程 序 设 计 的 两 种 方 法 , 并 以GUIDE设 计 方 法 为 主 , 详 细 讨 论 了 GUI程 序 设 计 中 的 相 关问 题 , 通 过 本 章 的 学 习 , 读 者 应 当 熟 练 掌 握 以 下 内 容 :l GUI对 象 及 层 次 结 构 ; l GUI界 面 设 计 , 包 括 各 类 对 象 的 创 建 方 法 及 相 关 的 属 性设 置 ;l GUI程 序 设 计 , 熟 悉 GUI M文 件 的 结 构 和 handles数 据 结构 , 熟 悉 各 类 界 面 对 象 的 回 调 函 数 ;l 熟 悉 完 整 的 GUI设 计 流 程 。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!