• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

MATLAB GUI设计(1)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一、新建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)%线宽

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi字符串函数StrUtils单元AnsiLeftStr、AnsiRightStr、AnsiMidStr、AnsiContainsS ...发布时间:2022-07-18
下一篇:
DELPHIIDFTP发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap