• MATLAB GUI设计(1)


    一、新建GUI

    1、命令行窗口输入 guide会出来如下界面,可以新建空白GUI,也可以打开已有GUI

    2、通过工具栏新建

    二、数据传递例子

    1、添加输入框按钮,设置尺寸大小,内容,格式,标签

    2、复制输入框按钮,得到输出框按钮

    3、转换按钮

    (1)添加按钮

    注意格式是pushbutton

    (2)添加回调函数 

    (3)运行

     3、界面可调

     

    4、滚动条

    (1)插入滑动条,设置

     (2)静态文本框

    (3)可编辑文本

    (4)回调函数

    打开滑动条的回调函数

    function slider1_Callback(hObject, eventdata, handles)
    % hObject    handle to slider1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    val=get(handles.slider1,'Value');%得到slider1,属性为‘Value’的值
    set(handles.edit1,'String',num2str(val));%设置edit1属性为‘String’的值
    

    加上最后两句,即可。  

     

     4、单选按钮

     (1)添加单选按钮,设置

    选择了该按钮,'Value'值为最大值,否则为最小值

    (2)添加可编辑文本

    (3)添加回调函数

    function radiobutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to radiobutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    val=get(handles.radiobutton1,'Value');%得到slider1,属性为‘Value’的值
    set(handles.edit1,'String',num2str(val));%设置edit1属性为‘Strin
    % Hint: get(hObject,'Value') returns toggle state of radiobutton1
    

     (5)更改最大最小值及设置

    5、复选框

    (1)添加复选框,设置

    (2)添加可编辑文本框(如上)

    (3)回调函数

    function checkbox1_Callback(hObject, eventdata, handles)
    % hObject    handle to checkbox1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    val=get(handles.checkbox1,'Value');%得到slider1,属性为‘Value’的值
    set(handles.edit2,'String',num2str(val));%设置edit1属性为‘Strin
    % Hint: get(hObject,'Value') returns toggle state of checkbox1
    

    6、切换函数

    (1)添加切换按钮

    (2)添加文本框

    (3)添加回调函数

    function togglebutton2_Callback(hObject, eventdata, handles)
    % hObject    handle to togglebutton2 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    val=get(handles.togglebutton2,'Value');%得到slider1,属性为‘Value’的值
    set(handles.edit3,'String',num2str(val));%设置edit1属性为‘Strin
    % Hint: get(hObject,'Value') returns toggle state of togglebutton2
    

     

    7、按钮组

    (1)添加按钮组控件,设置显示文字及大小

    (2)添加三个单选按钮,更改显示内容和大小

     

    运行一下,如下图

    同一时刻只能选择一个按钮,这就是按钮组的特点

    (3)添加坐标轴

    (4)添加SelectionChangedFcn函数

     

    function uibuttongroup1_SelectionChangedFcn(hObject, eventdata, handles)
    % hObject    handle to the selected object in uibuttongroup1 
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    x=0:0.01:2*pi;%定义x轴坐标
    axes(handles.axes1);%选中你要画图的坐标系
    current_selection=get(eventdata.NewValue,'tag');  %困扰了一天的问题终于解决了
                                                     %原来 是Tag 返回值是字符串类型  
                                                     % case后的选择条件要加引号 
    switch current_selection
        case 'radiobutton1'
            y1=sin(x);
            plot(x,y1);
            grid on
            title('sin(x)')
        case 'radiobutton2'
            y2=cos(x);
            plot(x,y2);
            grid on
            title('cos(x)')
        case 'radiobutton3'
            y3=sin(x)+cos(x);
            plot(x,y3);
            grid on
            title('sin(x)+cos(x)')
    end
    

     8、弹出式菜单

    (1)添加弹出式菜单

     

    Value 随着选择不同分别为1,2,3

    (2)添加回掉函数

    function popupmenu1_Callback(hObject, eventdata, handles)
    % hObject    handle to popupmenu1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    val=get(handles.popupmenu1,'Value')%不加分号,将结果显示
    

    选择不同的函数,返回不同的值

    (3)添加坐标轴

    (4)添加回调函数

    function popupmenu1_Callback(hObject, eventdata, handles)
    % hObject    handle to popupmenu1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    val=get(handles.popupmenu1,'Value');
    x=0:0.01:2*pi;%定义x轴坐标
    axes(handles.axes1);%选中你要画图的坐标系
    switch val
        case 1
            y1=sin(x);
            plot(x,y1);
            grid on
            title('sin(x)')
        case 2
            y2=cos(x);
            plot(x,y2);
            grid on
            title('cos(x)')
        case 3
            y3=sin(x)+cos(x);
    handles.h=plot(x,y3);%创建句柄
    set(handles.h,'Color',rand(1,3));%设置颜色

    title('sin(x)+cos(x)')
    end
    

     9、listbox控件

    (1)创建listbox控件

    Value的值和list内容一一对应。

    (2)添加按钮

    (3)添加可编辑文本

    (4)按钮函数添加回调函数

    function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    str=get(handles.listbox1,'String');%得到listbox1中String中的字符串,列表格式
    index_x=get(handles.listbox1,'Value');%列表的下标
    set(handles.edit1,'String',str(index_x));%将字符串显示在可编辑文本框中
    

     y轴的回调函数同理。 

     

    (5)CreatFcn函数(listbox将参数函数化)

    function listbox1_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to listbox1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
    
    % Hint: listbox controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white');
    end
    t=0:0.01:2*pi;
    canshu1=t;
    canshu2=sin(t);
    canshu3=cos(t);
    canshu4=sin(t)+cos(t);
    

     创建新的结构体,保存handles结构体

    cl=[canshu1;canshu2;canshu3;canshu4];%创建新的结构体,注意一定使用分号,否则得到的是一串数字。或者使用元胞格式,但是注意调试数据获取方式
    handles.cl=cl;
    guidata(hObject,handles);%更新handles结构体
    

    (6)回调函数中,选择的x,y轴参数赋值

    function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    str=get(handles.listbox1,'String');%得到listbox1中String中的字符串,列表格式
    index_x=get(handles.listbox1,'Value');%列表的下标
    set(handles.edit1,'String',str(index_x));%将字符串显示在可编辑文本框中
    
    x=handles.cl(index_x,:);%选择的x轴的数值
    handles.x=x;%必须定义新的handles,否则没法传递到下一个函数
    guidata(hObject,handles)
    

    y轴同理

    function pushbutton2_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton2 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    str=get(handles.listbox1,'String');
    index_y=get(handles.listbox1,'Value');
    set(handles.edit2,'String',str(index_y));
    y=handles.cl(index_y,:);
    handles.y=y;
    guidata(hObject,handles)
    

    (7)创建绘图按钮和坐标轴,并且添加绘图按钮回调函数

     

    function pushbutton3_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton3 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    axes(handles.axes2);%选中你要画图的坐标系
    plot(handles.x,handles.y);
    grid on
    axis equal
    

    元胞数组形式的全部程序

    function varargout = list_1(varargin)
    % LIST_1 MATLAB code for list_1.fig
    %      LIST_1, by itself, creates a new LIST_1 or raises the existing
    %      singleton*.
    %
    %      H = LIST_1 returns the handle to a new LIST_1 or the handle to
    %      the existing singleton*.
    %
    %      LIST_1('CALLBACK',hObject,eventData,handles,...) calls the local
    %      function named CALLBACK in LIST_1.M with the given input arguments.
    %
    %      LIST_1('Property','Value',...) creates a new LIST_1 or raises the
    %      existing singleton*.  Starting from the left, property value pairs are
    %      applied to the GUI before list_1_OpeningFcn gets called.  An
    %      unrecognized property name or invalid value makes property application
    %      stop.  All inputs are passed to list_1_OpeningFcn via varargin.
    %
    %      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
    %      instance to run (singleton)".
    %
    % See also: GUIDE, GUIDATA, GUIHANDLES
    
    % Edit the above text to modify the response to help list_1
    
    % Last Modified by GUIDE v2.5 23-Nov-2017 00:35:23
    
    % Begin initialization code - DO NOT EDIT
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @list_1_OpeningFcn, ...
                       'gui_OutputFcn',  @list_1_OutputFcn, ...
                       'gui_LayoutFcn',  [] , ...
                       'gui_Callback',   []);
    if nargin && ischar(varargin{1})
        gui_State.gui_Callback = str2func(varargin{1});
    end
    
    if nargout
        [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
    else
        gui_mainfcn(gui_State, varargin{:});
    end
    % End initialization code - DO NOT EDIT
    
    
    % --- Executes just before list_1 is made visible.
    function list_1_OpeningFcn(hObject, eventdata, handles, varargin)
    % This function has no output args, see OutputFcn.
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % varargin   command line arguments to list_1 (see VARARGIN)
    
    % Choose default command line output for list_1
    handles.output = hObject;
    
    % Update handles structure
    guidata(hObject, handles);
    
    % UIWAIT makes list_1 wait for user response (see UIRESUME)
    % uiwait(handles.figure1);
    
    
    % --- Outputs from this function are returned to the command line.
    function varargout = list_1_OutputFcn(hObject, eventdata, handles) 
    % varargout  cell array for returning output args (see VARARGOUT);
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    % Get default command line output from handles structure
    varargout{1} = handles.output;
    
    
    % --- Executes on selection change in listbox1.
    function listbox1_Callback(hObject, eventdata, handles)
    % hObject    handle to listbox1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    % Hints: contents = cellstr(get(hObject,'String')) returns listbox1 contents as cell array
    %        contents{get(hObject,'Value')} returns selected item from listbox1
    
    
    % --- Executes during object creation, after setting all properties.
    function listbox1_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to listbox1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
    
    % Hint: listbox controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white');
    end
    
    t=0:0.01:2*pi;
    canshu1=t;
    canshu2=sin(t);
    canshu3=cos(t);
    canshu4=sin(t)+cos(t);
    
    cl={canshu1,canshu2,canshu3,canshu4};%元胞数组创建新的结构体
    handles.cl=cl;
    guidata(hObject,handles)%更新handles结构体
    
    
    % --- Executes on button press in pushbutton1.
    function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    str=get(handles.listbox1,'String');%得到listbox1中String中的字符串,列表格式
    index_x=get(handles.listbox1,'Value');%列表的下标
    set(handles.edit1,'String',str(index_x));%将字符串显示在可编辑文本框中
    
    x=handles.cl{index_x};%选择的x轴的数值
    handles.x=x;%handles化
    guidata(hObject,handles)
    
    
    
    
    
    
    % --- Executes on button press in pushbutton2.
    function pushbutton2_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton2 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    str=get(handles.listbox1,'String');
    index_y=get(handles.listbox1,'Value');
    set(handles.edit2,'String',str(index_y));
    y=handles.cl{index_y};%注意使用花括号
    handles.y=y;%创建新的元胞数组传递数值
    guidata(hObject,handles)
    
    
    
    function edit1_Callback(hObject, eventdata, handles)
    % hObject    handle to edit1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    % Hints: get(hObject,'String') returns contents of edit1 as text
    %        str2double(get(hObject,'String')) returns contents of edit1 as a double
    
    
    % --- Executes during object creation, after setting all properties.
    function edit1_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to edit1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
    
    % Hint: edit controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white');
    end
    
    
    
    function edit2_Callback(hObject, eventdata, handles)
    % hObject    handle to edit2 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    % Hints: get(hObject,'String') returns contents of edit2 as text
    %        str2double(get(hObject,'String')) returns contents of edit2 as a double
    
    
    % --- Executes during object creation, after setting all properties.
    function edit2_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to edit2 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
    
    % Hint: edit controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white');
    end
    
    
    % --- Executes on button press in pushbutton3.
    function pushbutton3_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton3 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    axes(handles.axes2);%选中你要画图的坐标系
    plot(handles.x,handles.y);
    grid on
    axis equal

    注意整个实例是利用handles来传递全局变量。

    字符的一开始参数化,编程很好的思想。

    10、菜单编辑

    (1)创建菜单编辑器

    (2)创建坐标轴

    (3)添加回调函数

    function sin_x_Callback(hObject, eventdata, handles)
    % hObject    handle to sin_x (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    x=0:0.01:2*pi;
    axes(handles.axes1);
    handles.h=plot(x,sin(x));%创建画图句柄
    grid on
    title('正弦曲线')
    guidata(hObject,handles)%保存句柄
    
    
    % --------------------------------------------------------------------
    function cos_x_Callback(hObject, eventdata, handles)
    % hObject    handle to cos_x (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    x=0:0.01:2*pi;
    axes(handles.axes1);
    handles.h=plot(x,cos(x));%创建画图句柄
    grid on
    title('余弦曲线')
    guidata(hObject,handles)%保存句柄

    (4)添加上下文菜单

    更改坐标轴设置

    (5)添加颜色、线宽回调函数

    % --------------------------------------------------------------------
    function red_Callback(hObject, eventdata, handles)
    % hObject    handle to red (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    set(handles.h,'color','red')%设置红色
    
    
    % --------------------------------------------------------------------
    function yellow_Callback(hObject, eventdata, handles)
    % hObject    handle to yellow (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    set(handles.h,'color','y')
    
    
    % --------------------------------------------------------------------
    function grean_Callback(hObject, eventdata, handles)
    % hObject    handle to grean (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    set(handles.h,'color','g')
    
    function linewidth_1_Callback(hObject, eventdata, handles)
    % hObject    handle to linewidth_1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    set(handles.h,'linewidth',2)%线宽
    
    
    % --------------------------------------------------------------------
    function linewidth_2_Callback(hObject, eventdata, handles)
    % hObject    handle to linewidth_2 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    set(handles.h,'linewidth',4)%线宽
    

     

  • 相关阅读:
    java八大数据类型
    变量,常量,作用域
    位运算符
    可变参数
    重写
    javascript中各种循环总结
    前端高效emmit快捷键
    移动端列表页布局
    sublime text3中添加插件CSScomb方法
    友元类头文件互相包含问题
  • 原文地址:https://www.cnblogs.com/ruo-li-suo-yi/p/7834982.html
Copyright © 2020-2023  润新知