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


    介绍

           创建简单的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 按钮修改显示的文字
    Tagbutton方便后续调用
    弹出式菜单FontSize 10字体变大好看一点
    Tagmenu方便后续调用
    可编辑文本FontSize 10字体变大好看一点
    HorizontalAlignment left左对齐会好看
    Max2使Max-Min>1,使能多行输入以及滑动条
    Tagedit方便后续调用

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

    在这里插入图片描述

    添加代码

    初始化

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

    function T_OpeningFcn(hObject, eventdata, handles, varargin)
    
    handles.output = hObject;
    
    guidata(hObject, handles);
    
    • 1
    • 2
    • 3
    • 4
    • 5

           下面是添加初始化代码后的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属性)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    函数格式可参考可参考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的内容显示到可编辑文本
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    运行

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

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

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

  • 相关阅读:
    【附源码】Python计算机毕业设计木几画室管理系统
    实现STL(SGI)的string(深拷贝)
    Linux——进程控制(一)进程的创建与退出
    使用 fflush强制刷新缓冲区将数据写入文件的原理
    Sulfo-Cy5 羧酸,Sulfo-Cyanine5 carboxylic acid,花青素荧光染料Cy5标记羧酸
    mPaas小程序(支付宝、钉钉...)自定义组件,组件传参
    Flowable实战:启动事件与结束事件
    docker简单快速使用上手
    【Windows系统5分钟搭建Linux环境】
    Python+reuqests自动化接口测试
  • 原文地址:https://blog.csdn.net/weixin_47447179/article/details/126301617