《又到毕业季》MATLAB GUI 基础控件与交互

  • 视频教学地址
  • 一、窗体与排版
  • 二、按钮
  • 三、单选复选
  • 四、下拉菜单
  • 五、列表
  • 六、滚动条
  • 七、文本与编辑
  • 八、接口与调用
  • 其他

眼看六月就要毕业答辩了,你的论文是不是还差一个GUI没有做呢,赶紧来学基础控件与交互吧。

by 今天不飞了


视频教学地址

《又到毕业季》MATLAB GUI(一)窗体与布局
《又到毕业季》MATLAB GUI(二)按钮
《又到毕业季》MATLAB GUI(三)单选复选
《又到毕业季》MATLAB GUI(四)下拉菜单
《又到毕业季》MATLAB GUI(五)列表
《又到毕业季》MATLAB GUI(六)滚动条
《又到毕业季》MATLAB GUI(七)文本编辑框
《又到毕业季》MATLAB GUI(八)接口与调用


一、窗体与排版

function GUI1()Fig1 = figure('Position',[600,200,800,800],'menu','none');
Fig1.Color = 'white';
Fig1.NumberTitle = 'off';
Fig1.Name = 'GUI1';Pnl1 = uipanel(Fig1,'Position',[0.1,0.5,0.8,0.45]);
Pnl2 = uipanel(Fig1,'Position',[0.1,0.05,0.8,0.45]);Axes1 = axes(Pnl1,'Position',[0.1,0.1,0.4,0.8]);
Axes2 = axes(Pnl1,'Position',[0.5,0.1,0.4,0.8]);Axes3 = axes(Pnl2,'Position',[0.1,0.1,0.4,0.8]);
Axes4 = axes(Pnl2,'Position',[0.5,0.1,0.4,0.8]);x = 1:100;
y = x*2;
im = rand(100);
imrgb = rand(100,100,3);plot(Axes1,x,y,'b')
plot(Axes2,x,y,'r')
imshow(im,'Parent',Axes3)
imshow(imrgb,'Parent',Axes4)end

二、按钮

function GUI2()Fig = figure('Position',[700,200,600,600],'menu','none');
Fig.Color = 'white';
Fig.NumberTitle = 'off';
Fig.Name = 'GUI2';Pnl1 = uipanel(Fig,'Position',[0.1,0.17,0.8,0.8]);
Pnl2 = uipanel(Fig,'Position',[0.1,0.05,0.8,0.1]);Axes = axes(Pnl1,'Position',[0,0,1,1]);Bt1= uicontrol(Pnl2,'style','pushbutton','String','请解锁','Fontsize',16,...'Units','normalized','Position',[0,0,0.5,1],'Callback',@ChangeColor);
Bt2 = uicontrol(Pnl2,'style','togglebutton','String','解锁','Fontsize',16,...'Units','normalized','Position',[0.5,0,0.5,1],'Callback',@Lock);state = 0;
im = ones(100,100,3);
imshow(im,'Parent',Axes)function ChangeColor(~,~)if statergb = rand(1,1,3);imnew = im.*rgb;imshow(imnew,'Parent',Axes)endendfunction Lock(~,~)state = get(Bt2,'Value');if stateset(Bt2,'String','锁定')set(Bt1,'String','更改颜色')elseset(Bt2,'String','解锁')set(Bt1,'String','请解锁')endendend

三、单选复选

function GUI3()im = ones(100,100,3);Fig = figure('Position',[500,200,900,600],'menu','none');
Fig.Color = 'white';
Fig.NumberTitle = 'off';
Fig.Name = 'GUI3';% 绘图面板
Pnl1 = uipanel(Fig,'Position',[0.05,0.35,0.9,0.6],...'Title','绘图窗口','Fontsize',14);
% 选项面板框
Pnl2 = uipanel(Fig,'Position',[0.05,0.05,0.3,0.3],...'Title','复选框','Fontsize',14);
Pnl3 = uipanel(Fig,'Position',[0.35,0.05,0.3,0.3],...'Title','单选框','Fontsize',14);
% 按钮组
Pnl4 = uibuttongroup (Fig,'Position',[0.65,0.05,0.3,0.3],...'Title','单选框组','Fontsize',14);Axes1 = axes(Pnl1,'Position',[0,0,1/3,1]);
Axes2 = axes(Pnl1,'Position',[1/3,0,1/3,1]);
Axes3 = axes(Pnl1,'Position',[2/3,0,1/3,1]);checkBoxList = {'红','绿','蓝'};
colorList = {[1,0.6,0.6],[0.6,1,0.6],[0.6,0.6,1]};
BtGroup1 = cell(3,1);
for n = 1:3BtGroup1{n} = uicontrol(Pnl2,'style','checkbox',...'String',checkBoxList{n},'Fontsize',16,'BackgroundColor',colorList{n},...'Units','normalized','Position',[0.2,1-n/3,0.6,1/3],...'Callback',@ChangeColor1);
endBtGroup2 = cell(3,1);
for n = 1:3BtGroup2{n} = uicontrol(Pnl3,'style','radiobutton',...'String',checkBoxList{n},'Fontsize',16,'BackgroundColor',colorList{n},...'Units','normalized','Position',[0.2,1-n/3,0.6,1/3],...'Callback',@ChangeColor2);
endBtGroup3 = cell(3,1);
for n = 1:3BtGroup3{n} = uicontrol(Pnl4,'style','radiobutton',...'String',checkBoxList{n},'Fontsize',16,'BackgroundColor',colorList{n},...'Units','normalized','Position',[0.2,1-n/3,0.6,1/3],...'Callback',@ChangeColor3);
end% 初始化
ChangeColor1()
ChangeColor2()
ChangeColor3()function ChangeColor1(~,~)rgb = zeros(1,1,3);for i = 1:3rgb(i) = get(BtGroup1{i},'Value');endimnew = im.*rgb;imshow(imnew,'Parent',Axes1);endfunction ChangeColor2(~,~)rgb = zeros(1,1,3);for i = 1:3rgb(i) = get(BtGroup2{i},'Value');endimnew = im.*rgb;imshow(imnew,'Parent',Axes2);endfunction ChangeColor3(~,~)rgb = zeros(1,1,3);for i = 1:3rgb(i) = get(BtGroup3{i},'Value');endimnew = im.*rgb;imshow(imnew,'Parent',Axes3);endend

四、下拉菜单

function GUI4()
im = imread('test.jpg');
Fig = figure('Position',[500,200,1400,800],'menu','none');
Fig.Color = 'white';
Fig.NumberTitle = 'off';
Fig.Name = 'GUI4';% 面板
Pnl1 = uipanel(Fig,'Position',[0.1,0.25,0.8,0.7]);
Pnl2 = uipanel(Fig,'Position',[0.1,0.05,0.8,0.1]);% 下拉按钮
sizeList = {[1,1],[1,2],[2,2],[2,4]};
for s = 1:length(sizeList)menuList{s} = strcat(num2str(sizeList{s}(1)),'*',num2str(sizeList{s}(2)));
end
Menu = uicontrol(Pnl2,'style','popupmenu',...'String',menuList,'Fontsize',16,...'Units','normalized','Position',[0,0,1,1],...'Callback',@GenerateAxes);% 绘图窗初始化
Axes = [];
axesNum = 0;
GenerateAxes();function GenerateAxes(~,~)tmp = get(Menu,'Value');for n = 1:axesNumdelete(Axes{n}) endAxes = [];row = sizeList{tmp}(1);col = sizeList{tmp}(2);for r = 1:rowfor c = 1:colidx = (r-1)*col+c;Axes{idx} = axes(Pnl1,'Position',[(c-1)/col,1-r/row,1/col,1/row]);endendaxesNum = length(Axes);updata();endfunction updata()for n = 1:axesNumimshow(im,'Parent',Axes{n})endendend

五、列表

function GUI5()% 基本框架
Fig = figure('Position',[800,200,1000,800],'menu','none');Pnl1 = uipanel(Fig,'Position',[0.1,0.1,0.2,0.8]);
Pnl2 = uipanel(Fig,'Position',[0.3,0.1,0.6,0.8]);Bt = uicontrol(Pnl1,'style','pushbutton',...'String','选择数据集','Fontsize',16,...'Unit','normalized','Position',[0,0.9,1,0.1],...'Callback',@LoadData);Lb = uicontrol(Pnl1,'style','listbox',...'String',[],'Fontsize',12,...'Unit','normalized','Position',[0,0.0,1,0.9],...'Callback',@Doit);Axes = axes(Pnl2,'Position',[0,0,1,1]);fileList = {};
fileNum = 0;
dataSet = {};function LoadData(~,~)folderPath = uigetdir('.\','请选择一个路径');fileList = dir(fullfile(folderPath,'*.jpg'));fileList = {fileList.name};fileNum = length(fileList);set(Lb,'String',fileList);        for n = 1:fileNumdataSet{n} = imread(fullfile(folderPath,fileList{n}));            endimshow(dataSet{1},'Parent',Axes)endfunction Doit(~,~)idx = get(Lb,'value');imshow(dataSet{idx},'Parent',Axes)endend

六、滚动条

function GUI6()%% 搭框架
Fig = figure('Position',[800,100,800,900],'menu','none');
Fig.Color = 'white';
Fig.NumberTitle = 'off';
Fig.Name = 'GUI6';
% 面板
Pnl1 = uipanel(Fig,'Position',[0.05,0.2,0.9,0.75]);
Pnl2 = uipanel(Fig,'Position',[0.05,0.05,0.9,0.1]);
% 绘图窗
Axes = axes(Pnl1,'Position',[0.1,0.1,0.9,0.9]);
Lbx = uicontrol(Pnl1,'style','slider',...'String',[],'Fontsize',12,...'Unit','normalized','Position',[0.1,0,0.9,0.05],...'Max',1,'Min',-1,...'Callback',@Move);
Lby = uicontrol(Pnl1,'style','slider',...'String',[],'Fontsize',12,...'Unit','normalized','Position',[0,0.1,0.05,0.9],...'Max',1,'Min',-1,...'Callback',@Move);  % 操作窗
uicontrol(Pnl2,'style','pushbutton',...'String','红方用力','Fontsize',16,'BackgroundColor',[1,0.5,0.5],...'Unit','normalized','Position',[0,0,0.2,1],...'Callback',@Pull1);
uicontrol(Pnl2,'style','pushbutton',...'String','蓝方用力','Fontsize',16,'BackgroundColor',[0.5,0.5,1],...'Unit','normalized','Position',[0.8,0,0.2,1],...'Callback',@Pull2);
Lb = uicontrol(Pnl2,'style','slider',...'String',[],'Fontsize',12,...'Unit','normalized','Position',[0.2,0.,0.6,1],...'Max',1,'Min',-1); %% 初始化
%  初始化目标
plot(-1,0,'ro','MarkerSize',30,'Parent',Axes),hold on
plot(1,0,'bo','MarkerSize',30,'Parent',Axes)
plot([-1,1],[0,0],'k-')
obj = plot(0,0,'k.','MarkerSize',30,'Parent',Axes);
% 初始化坐标轴
range = [-1.2,1.2,-1,1];
axis(Axes,range)
grid on%% 开始操作吧
while truedis = randi([-3,3])/50;obj.XData = min(max(obj.XData+dis,-1),1);set(Lb,'Value',obj.XData)            % 你慢一点pause(0.1)drawnow% 你们别打啦if abs(obj.XData)==1breakendend%% 子函数function Move(~,~)xids = get(Lbx,'Value');yids = get(Lby,'Value');change = [xids,xids,yids,yids];axis(Axes,range+change)        endfunction Pull1(~,~)obj.XData = max(obj.XData-0.2,-1);set(Lb,'Value',obj.XData);endfunction Pull2(~,~)obj.XData = min(obj.XData+0.2,1);set(Lb,'Value',obj.XData);endend

七、文本与编辑

function GUI7()% 主界面
Fig = figure('Position',[500,200,900,600],'menu','none');
Fig.Color = 'white';
Fig.NumberTitle = 'off';
Fig.Name = 'GUI7';% 历史记录
Pnl1 = uipanel(Fig,'Position',[0.05,0.5,0.9,0.5],...'Title','历史记录','Fontsize',14,'BackgroundColor','w');
% 骚操作
Pnl2 = uipanel(Fig,'Position',[0.05,0.05,0.9,0.4],...'Title','人工输入','Fontsize',14,'BackgroundColor','w');% 文本框
str1 = {'欢迎使用'};
Text = uicontrol(Pnl1,'style','text',...'String',str1,'Fontsize',16,...'Units','normalized','Position',[0.05,0.05,0.9,0.9]);
% 编辑框
str2 = '请输入你想要的的内容';
Edit = uicontrol(Pnl2,'style','edit',...'String',str2,'Fontsize',16,...'Units','normalized','Position',[0.05,0.05,0.6,0.9]);% 按钮
Bt = cell(3,1);
BtNameList = {'增加','替换','清除'};
for n = 1:3
Bt{n} = uicontrol(Pnl2,'style','pushbutton',...'String',BtNameList{n},'Fontsize',16,...'Units','normalized','Position',[0.7,0.95-n*0.3,0.25,0.3]);
endBt{1}.Callback = @doit1;
Bt{2}.Callback = @doit2;
Bt{3}.Callback = @doit3;function doit1(~,~)tmp = get(Edit,'String');str1 = cat(1,str1,{tmp});set(Text,'String',str1);set(Edit,'String','');endfunction doit2(~,~)tmp = get(Edit,'String');str1 = {tmp};set(Text,'String',str1);set(Edit,'String','');endfunction doit3(~,~)str1 = {};set(Text,'String',str1);set(Edit,'String','');endend

八、接口与调用

function GUI8()% 框架
Fig1 = figure('Position',[400,600,300,400],'menu','none');
Fig1.Color = 'white';
Fig1.NumberTitle = 'off';
Fig1.Name = 'GUI8';
% 按钮
num = 8;
for n = 1:nump = [0.05,1-n/num,0.9,1/num];Bt{n} = uicontrol(Fig1,'style','pushbutton',...'String',['运行GUI',num2str(n)],'Fontsize',16,...'Units','normalized','Position',p);
end
Bt{1}.Callback = @Doit1;
Bt{2}.Callback = @Doit2;
Bt{3}.Callback = @Doit3;
Bt{4}.Callback = @Doit4;
Bt{5}.Callback = @Doit5;
Bt{6}.Callback = @Doit6;
Bt{7}.Callback = @Doit7;
Bt{8}.Callback = @Doit8;function Doit1(~,~)GUI1();endfunction Doit2(~,~)GUI2();endfunction Doit3(~,~)GUI3();endfunction Doit4(~,~)GUI4();endfunction Doit5(~,~)GUI5();endfunction Doit6(~,~)GUI6();endfunction Doit7(~,~)GUI7();endfunction Doit8(~,~)close allGUI8();endend

其他

此文为《又到毕业季》MATLAB GUI系列视频的代码合集。

《又到毕业季》MATLAB GUI 基础控件与交互相关推荐

  1. MATLAB GUI不同控件函数间变量传递方法

    在GUI中一个控件函数结束后,会将在这个函数中使用的变量全部删除,如果想在另一个控件中使用,则必须想办法将这个变量保存传递,方法有以下几种: 1.使用globe定义全局变量,这种方法不是很好,一方面是 ...

  2. Unity3d UGUI基础控件使用(一)

    转载自:Unity3d UGUI基础控件使用(一) 一:UGUI介绍 UGUI是Unity4.6之后,经过多重测试,推出全新的UI系统,更灵活,快捷,易用的可视化游戏UI开发工具. 由于之前传统的UI ...

  3. Android中的基础控件TextView、Button、ImageView、EditText、ProgressBar

    文章目录 1 Android中的基础控件 1.1 控件的通用属性 2 TextView 2.1 TextView的继承关系 2.2 TextView的常用属性 3 EditText 3.1 常用属性 ...

  4. Android:基础控件按键文本框输入框制作登录页面

    基础控件之Button,TextView,EditText,ImageView Button:按键 TextView:文本框 EditText:输入框 ImageView:图片 那我们新建一个工程研究 ...

  5. 003 Android之线性布局与基础控件

    文章目录 Android快速入门三步 布局介绍 LinearLayout布局属性 代码示例 基础控件 TextView和EditText 使用TextView与EditText ImageView I ...

  6. matlab treeview,treeview控件

    高分在线等:C#中如何给treeview控件上的节点前添比如有一treeview1控件,需要在其所有节点前均加一静态小图标(所有节点我也新手,正好刚用过这功能.如下: 1. 到工具箱中拖一个image ...

  7. WPF 基础控件之 GroupBox样式

    其他基础控件 1.Window 2.Button 3.CheckBox 4.ComboBox 5.DataGrid 6.DatePicker 7.Expander GroupBox控件修改Style需 ...

  8. iOS界面设计之基础控件的学习 --- UITextField

    学习iOS界面设计也有段时间了,每次写到一些基础控件(如:UILable . UITextField)的时候就深觉应该总结一个函数来实现这些基础控件的属性设置,所以下面就是我对UITextField的 ...

  9. SilverLight:基础控件使用(6)-Slider控件

    ylbtech-SilverLight-Basic-Control:基础控件使用(6)-Slider控件 Slider 控件 Slider 控件的 ValueChanged 事件 1.A,返回顶部 S ...

  10. SilverLight:基础控件使用(5)-TreeView控件-基本使用

    ylbtech-SilverLight-Basic-Control:基础控件使用(5)-TreeView控件-基本使用 前台编辑 后台逐个添加 后台绑定数据源 1.A,返回顶部TreeView控件(树 ...

最新文章

  1. ICCV2019论文点评:3D Object Detect疏密度点云三维目标检测
  2. MonoRail学习笔记五:定制服务实现自定义功能
  3. python头文件math.h_将常量从.h文件导入到python中
  4. 【已解决】虚拟机提示VMware Workstation cannot connect to the virtual machine的问题
  5. 【Zabbix】邮件接收 Problem 通知
  6. 智能型住宅自动控制与管理系统分析
  7. malloc申请得到的内存后,再free释放它的时候,操作系统会立即收回那块内存吗?
  8. UVa 208 Firetruck【回溯】
  9. 刘敏华:2013年网络营销行业展望
  10. java数列的个位数求和_java二位数组相加
  11. 计算机硬盘存绝密,教您创建自己的绝密磁盘
  12. 多式样ProgressBar(转)
  13. Zotero文献管理 | Zotero下载使用、Zotero+坚果云实现多设备文献同步
  14. Android10定位无法选择,Android 10不能使用uiautomatorviewer定位元素的终极解决方法
  15. 太极图正确画法_太极图唯一正确的画法
  16. 软件编程推荐书籍目录
  17. CCAA 常见错题集
  18. matplotlib中文显示以及设置图片大小
  19. 你会心动吗?ICPR 2018 MTWI挑战赛开启
  20. 基础论文 (一) ADDA

热门文章

  1. 银行的USB KEY里面包含的是什么
  2. 计算机飞行模式无法关闭,Win10开启飞行模式之后无法关闭退出怎么解决
  3. 解析Excel(xls、xlsx两种格式)
  4. wordcloud----canvas 绘制标签云/词云web版wordle(一)
  5. 基于SpringBoot的在线学生请假管理系统的设计与实现毕业设计源码
  6. android keep倒计时,Android仿Keep运动休息倒计时圆形控件
  7. 淘宝返利是怎么回事?是真的还是假的?
  8. 【备忘】尚学堂白贺翔java互联网架构师视频教程下载
  9. 程序员如何成为架构师
  10. BIOS升级,差一点也不行