MATLAB从0开始搭建简单的GUI界面

·  阅读 905

本文已参与「新人创作礼」活动, 一起开启掘金创作之路。

介绍

       创建简单的UI界面,并包含“普通按钮”、“弹出式菜单”以及“可编辑文本”3种控件,通过“弹出式菜单”选择文字,按下按钮后在可编辑文本中显示。

文件创建

       首先,创建.fig文件,在”命令行“窗口内输入guide,点击回车后弹出以下弹窗,左侧的GUIDE templates即GUIDE模板,默认为空白,选中其它模板后右侧可以看到预览画面。

       勾选下面弹窗以修改文件名称(好像这里的文件名称不能和文件夹名重复,也就是这里不能设置为try.fig,重复的话后面不能保存更不用说运行了),最后点击下面的确定。

在这里插入图片描述

       此时在“当前文件夹”窗口会产生T.fig文件和T.m文件,弹出T.fig弹窗,如下图所示,并且“编辑器窗口”也是选中了T.m文件。

在这里插入图片描述

T.m文件可以认为是T.fig文件的本体,运行整个UI界面有两种方法:点击上图.fig文件弹窗右上角的绿色运行符,或运行T.m文件。

注意右键“当前文件夹”窗口的.fig文件,然后点击“运行”,无法真的运行该界面,只能看而已。

若关闭后要进入上述编辑框,可右键“当前文件夹”窗口的.fig文件,点击“在GUIDE”中打开。

UI界面设计

       本文将通过3种控件:“普通按钮”、“弹出式菜单”以及“可编辑文本”创建简单的UI界面,首先将这3种控件拖动至背景框,停留在控件上会显示控件名,如下图所示。

在这里插入图片描述

       其次,随意地放置这些控件,拖动至背景框后,点击控件并左键按住边缘点并拖动可以对其进行拉伸。

       放置后双击相应控件,会弹出该控件的属性检查器(一般左上角显示1个图标并写着”检查器“),根据下面的表格设置3种控件的对应属性:

控件名|修改属性|修改值|作用 修改属性 修改值 作用
普通按钮 FontSize 10 字体变大好看一点
String 按钮 修改显示的文字
Tag button 方便后续调用
弹出式菜单 FontSize 10 字体变大好看一点
Tag menu 方便后续调用
可编辑文本 FontSize 10 字体变大好看一点
HorizontalAlignment left 左对齐会好看
Max 2 使Max-Min>1,使能多行输入以及滑动条
Tag edit 方便后续调用

       通过上述修改后,可以先点击右上角运行图标,运行试试。如下图所示,可以点击“按钮”查看变化,点击“文本编辑框”并输入相应数据,又或者点击”弹出式菜单“。当然,此时各种操作都不会执行相应的操作(毕竟没设置),接下来设置各个控件的回调函数,以实现相应的交互功能。

在这里插入图片描述

添加代码

初始化

       在T.m文件中,前两个函数为T函数和T_OpeningFcn函数,一般控件的初始化代码放在T_OpeningFcn函数中,未添加代码时该函数如下所示(省略注释),初始化代码一般添加在最下面。

function T_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

guidata(hObject, handles);
复制代码

       下面是添加初始化代码后的T_OpeningFcn函数,以及相应代码的注释。

function T_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;
guidata(hObject, handles);

global str;       %定义全局变量str
set(handles.menu, 'string', {'我', '舅舅', '音乐老师', '和', '结婚了',...  %...为续行符
    }, 'value', 1);    %设置弹出式菜单弹出的内容(string属性)以及目前选中的选项(value属性)
str='';                %初始化变量str为空
set(handles.edit, 'string',str);   %设置可编辑文本的内容(string属性)
复制代码

函数格式可参考可参考MATLAB函数及文件一文。

set函数设置控件的属性可参考GUI应用一文的控件-属性。

       上述代码添加后,可运行T.m文件,会弹出UI界面,可以查看这些代码做了什么。

按键回调函数

首先回到GUIDE中,打开方法如下:

  1. 右键“当前文件夹”窗口的.fig文件,点击“在GUIDE”中打开。
  2. 在“命令行”窗口输入“guide”后,选择“打开现有GUI”,选择相应的.fig文件。

       打开后,右键“普通按钮”-查看回调-点击Callback,此时“编辑器”窗口跳转到T.m文件的button_Callback函数中(函数名称的前面是控件的Tag),为该函数添加相应代码,如下所示。

function button_Callback(hObject, eventdata, handles)

global str;                           %这里变成了声明全局变量global(因为已被定义)
Menu = get(handles.menu, 'String');   %获取弹出式菜单的内容,实际上该项是不变的
Value = get(handles.menu, 'Value');   %获取弹出式菜单目前所选中的内容
str = [str,Menu{Value}];              %将选中的内容添加到str
set(handles.edit, 'String', str);     %将str的内容显示到可编辑文本
复制代码

运行

       此时,整个工程完成,点击运行T.m文件,点击按钮,可将”弹出式菜单“目前选中的内容写入”可编辑文本“中,并且之前的内容不会被覆盖。

实际上本工程中,用控件“列表框”比“弹出式菜单”会好用一点,而且使用方式也几乎一模一样,但弹出式菜单确实比较常用。

通过本文的介绍,通过matlab创建UI界面应该问题不大,对其它控件的使用介绍可参考GUI应用一文。

分类:
代码人生
标签:
收藏成功!
已添加到「」, 点击更改