精华内容
下载资源
问答
  • matlab gui界面编程实例

    2012-05-17 11:54:24
    matlab gui 界面编程实例 一个实例搞定MATLAB界面编程
  • matlabGUI界面编程示例

    2012-08-03 15:26:36
    matlab GUI 界面编程示例 (CS实验平台)
  • Matlab GUI 界面编程:界面名称修改

    千次阅读 2019-12-06 11:37:21
    Matlab GUI 界面编程:界面名称修改 在界面的m文件中,找到界面的OpeningFcn函数 function day1_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % ...

    Matlab GUI 界面编程:界面名称修改

    20191206
    在界面的m文件中,找到界面的OpeningFcn函数

    function day1_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 day1 (see VARARGIN)
    set(gcf,'name','GUI示例'); %第三个参数为要修改的界面名称
    % Choose default command line output for day1
    handles.output = hObject;
    % Update handles structure
    guidata(hObject, handles);
    
    展开全文
  • Matlab GUI 界面编程:资料推荐 1.微信公众号:打浦桥程序员 里面有很多关于matlab GUI 以及matlab相关的东西,我基本上都是看的这个 2.matlab中文论坛,有什么不会的,搜它!

    Matlab GUI 界面编程:资料推荐

    1.微信公众号:打浦桥程序员
    里面有很多关于matlab GUI 以及matlab相关的东西,我基本上都是看的这个
    2.matlab中文论坛,有什么不会的,搜它!

    展开全文
  • MATLAB GUI界面编程——一些细节问题

    万次阅读 多人点赞 2019-01-06 22:59:58
    写在前面的话: 本篇博文主要对自己在进行MATLAB GUI设计时遇到的一些细节问题进行...一、使用MATLAB的GUIDE开发环境,来快速创建GUI界面 二、修改MATLAB GUI的.fig和.m文件名 三、修改MATLAB GUI界面的名字 四...

    写在前面的话:

    本篇博文主要对自己在进行MATLAB GUI设计时遇到的一些细节问题进行总结,点击下面目录中的相关问题,可以直接跳转至相应位置。另外,需要声明的是,我所使用的MATLAB版本——MATLAB R2017a。


    目录

    一、使用MATLAB的GUIDE开发环境,来快速创建GUI界面

    二、修改MATLAB GUI的.fig和.m文件名

    三、修改MATLAB GUI界面的名字

    四、修改MATLAB GUI界面左上角的Logo

    五、GUI的Edit Text控件输入文本默认居中对齐,如何设置其中的文本对齐方式?

    六、界面之间的交互——GUI怎么从欢迎界面跳转到另一个主界面?

    七、GUI界面,如何设置自定义菜单功能和按钮功能相同?

    八、运行GUI时,出现错误:Reference to non-existent field 'output'

    九、全局变量

    十、在设计GUI界面时,期望运行代码(具体某个算法)的同时,用一个进度条来展示算法的运行进度。

     


     

    一、使用MATLAB的GUIDE开发环境,来快速创建GUI界面

    MATLAB命令窗口输入guide,会打开下图所示的GUIDE启动对话框

    勾选左下角保存。这里保存文件名为“myGUI.fig”。点击确定后,会打开一个空白GUI设计界面。同时,会生成两个名为“myGUI”文件,后缀分别为“.fig”和“.m”。

     

    (GUI设计界面下,“File”——“Preferences”,在弹出的性能设置对话框中选择“Show names in component palette”(前面打钩),则GUIDE界面下的交互组件面板将会显示所有控件的名称。)。再点击下面的“Apply”(应用)、“OK”,即可完成设置。

     

    二、修改MATLAB GUI的.fig和.m文件名

    如果后面需要修改文件名(即修改MATLAB GUI的.fig和.m文件名)。提供一下两种做法:

    1、“文件另存为”的方式(File——>Save As)——推荐使用这种方式(方便)

    设置好新的文件名后,会自动生成两个新的文件,后缀依然分别为“.fig”和“.m”。

    2、直接对文件名进行修改(后缀为“.fig”和“.m”的两个文件都要修改,且一致)。

    并且,打开修改后的后缀为“.m”的文件,Ctrl+F,找到其中旧的文件名,点击“Replace All”替换全部。

     

    三、修改MATLAB GUI界面的名字

    例如如下界面:

    运行时:

    期望修改运行时左上角的界面名字为“用户登录界面”。

    方法一:

    菜单栏“View”——“Property Inspector”,打开GUI界面的属性设置窗口,下拉找到属性“name”,进行设置即可。

    (注意:这时候不要选中任何一个控件,否则打开的是对应控件的属性设置窗口,而非GUI界面的属性窗口。可以通过点击GUI界面中控件以外的网格区域来避免选中控件。)

    方法二:在对应的“.m”文件中输入相关代码。

    找到“.m”文件中的函数(function varargout = untitled2_OutputFcn(hObject, eventdata, handles))

    在该函数下面输入:

    set( hObject, 'name', '用户登录界面' ); % 其中的 hObject 替换成 gcf,效果依然成立
    % 即 set( gcf, 'name', '用户登录界面' );

     程序在运行时,就会得到相应的效果。

    效果图

     

    在GUI的“.m”文件中的OpeningFcn函数或者OutputFcn函数中添加以下代码:

    % 设置页面左上角的 Logo
    I = imread( 'Logo.jpg' ); % Logo.jpg为指定的图标
    javaImage = im2java( I );
    newIcon = javax.swing.ImageIcon( javaImage );
    figFrame = get( handles.figure1, 'JavaFrame' ); % 取得Figure的JavaFrame
    figFrame.setFigureIcon( newIcon ); % 修改图标

     本问题参考了网址:https://blog.csdn.net/hycwoaiyl/article/details/80113594

     

    五、GUI的Edit Text控件输入文本默认居中对齐,如何设置其中的文本对齐方式?

    双击该控件,打开其属性设置窗口(Property Inspector),找到“HorizontalAlignment”属性,就可以设置left(左对齐)、center(居中)、right(右对齐)。其他控件的对齐方式,设置方法相同

     

    六、界面之间的交互——GUI怎么从欢迎界面跳转到另一个主界面?

    “做了一个登录界面,当输入帐号密码正确无误后,点击登录会显示一个对话框‘登录成功’。再点击OK按钮会进入主界面,请问怎么实现进入主界面呢?是要做两个fig然后调用吗?还是其他什么办法呢? ”

    方法:做两个界面,例如第二个界面命名为GUI2, 设置OK的callback函数为关闭当前的GUI界面,打开第二个GUI界面。用delete或close关闭当前的GUI即可。

    具体地,在“登录”按钮的回调函数中写如下语句:

    GUI2; % 第二个界面(主界面)————推荐直接输入函数名的这种方式
    % 或者:
    % open('GUI2.fig');
    
    h = gcf; 
    close( h );

    然后保存,运行这个按钮界面,点击按钮就可以出现“GUI2” 界面。

     

    七、GUI界面,如何设置自定义菜单功能和按钮功能相同?

           具体地,在GUI界面中,设计了菜单栏中的一些功能,也设计了界面中一些功能按钮。期望菜单栏中的一些菜单项和功能按钮实现的功能一致。也就是说,有相同的回调函数。

           类似的问题:

    •        给多个控件的callback函数中添加同样的命令;
    •        多个控件执行相同的任务;
    •        一个控件调用另一个控件的回调函数;

           具体解决方法:

           方法一:(推荐)

           先编写好其中一个按钮的回调函数(Callback),例如一个按钮的 Tag 名为pushbutton_Enter,其回调函数为

    function pushbutton_Exit_Callback( hObject, eventdata, handles ) 
    %
    % 具体的代码在此省略
    %

           而对于那个相应的菜单(Tag名为menu_Enter),其回调函数可以为空代码,即具体的回调函数中除了函数名,不包含具体的调用代码。而是在GUI的XXX_OpeningFcn()或者XXX_OutputFcn()函数中插入下面的两行代码完成设置(XXX为GUI名):

    tempEnterCallback = get( handles.pushbutton_Enter, 'Callback' );
    set( handles.menu_Enter, 'Callback', tempEnterCallback );
    % 解释:
    % 先用get()函数获取到第一个控件的Callback属性,
    % 再利用set()函数将第二个控件的Callback属性设置为第一个控件的Callback

     

           方法二:

           先编写好其中一个按钮的回调函数(Callback),例如一个按钮的 Tag 名为pushbutton_Enter,其回调函数为

    function pushbutton_Exit_Callback( hObject, eventdata, handles ) 
    %
    % 具体的代码在此省略
    %

           而对于那个相应的菜单(Tag名为menu_Enter),其回调函数按如下代码所示即可:

    % --------------------------------------------------------------------
    function menu_Enter_Callback(hObject, eventdata, handles)    % 菜单栏中的“登录”项-callback
    % hObject    handle to menu_Enter (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    pushbutton_Enter_Callback( handles.pushbutton_Enter, eventdata, handles ); % 关键句
    % “登录”按钮的回调函数
    % 也即,只需在该菜单项的回调函数中加入类似的这句代码即可实现任务,去调用“登录”按钮的回调函数
    
    % 如法炮制,类似的情况也都可以这样操作

     

    八、运行GUI时,出现错误:Reference to non-existent field 'output'

    具体错误如下图:

    解析:

    出现这个错误,看看是不是 function XXX_OpeningFcn( hObject, eventdata, handles, varargin )  函数中(XXX为GUI名)的下面这几行代码发生了变化:

    handles.output = hObject;
    % Update handles structure
    guidata( hObject, handles ); 
    
    % 看看是不是程序的OpeningFcn()函数中的这几行代码发生了变化(被无意间删掉了,或者注释掉了)

    只要把上面这几句代码加入在OpeningFcn()函数中即可。

     

    九、全局变量

    “在函数或基本工作空间中,用global声明的变量为全局变量。”

    “声明了全局变量的函数或基本工作空间,共享该全局变量,都可以给它赋值。”

    “如果函数的子函数也要使用全局变量,也必须用global声明。”

    “全局变量要放在函数开始处声明。”

    ——以上四行引自罗华飞老师的《MATLAB GUI设计学习手记》,第三版,北航出版社,2014年。

     

    在进行MATLAB GUI设计时,有时不同的控件会用到同一个变量,这时就需要定义为全局变量。并且,只要用到全局变量的函数体内都需要用global进行声明。(在不同的子函数里面,只要使用全局变量,都需要用global  ‘Varname’ 声明。

    定义多个全局变量时,global 开头,变量名跟着后面,变量名之间用空格隔开即可。

     

    十、在设计GUI界面时,期望运行代码(具体某个算法)的同时,用一个进度条来展示算法的运行进度。

    (类似的问题:期望运行进度条的同时,后台也执行着其他代码。)

    如题。搜索浏览了一些网页资料和书籍。得出的结论:

    MATLAB是一种单线程运行结构后台程序依次顺序执行MATLAB不提供异步的功能给用户

    而我这里后台执行的算法代码是一个封装的整体,所以就不可能边执行算法程序,边用进度条展示出程序执行进度。

    如果用waitbar()做一个界面上的进度条,也只是给出一个虚假的进度,并且按照顺序执行的思路,也要先展示完进度条,后台才真正开始执行我的算法代码。所以这个想法暂时不能实现。

    (该问题也参考了网址:http://www.ilovematlab.cn/thread-315978-1-1.html(MATLAB GUI 在运行进度条的同时后台处理数据))

    附: waitbar()函数的官方文档:https://ww2.mathworks.cn/help/matlab/ref/waitbar.html?refresh=true

     

    十一、针对问题十,给出一个实例

    声明:该实例引自罗华飞老师的《MATLAB GUI设计学习手记》,第三版,北航出版社,2014年,第329页【例5.2】

    【例5.2】动态绘出频率从 1 到 10 依次变化的正弦波曲线,并用进度条显示绘图进度。

    set( gcf, 'visible', 'on' ); % 设置当前坐标轴用于绘制曲线,注意:gcf、gca创建的figure默认是隐藏的
    
    %% 创建置于屏幕前端的进度条,动态显示绘图进度
    h = waitbar( 0, '开始绘图...', 'WindowStyle', 'modal' ); 
    
    t = 0 : 0.01 : pi;%数据的横坐标
    
    for i = 1 : 10
        plot( t, sin(2*pi*i*t) ); % 绘制数据曲线
        waitbar(i/10, h, ['已完成' num2str(10*i) '%']); % 更新进度条的进度和标题
        pause(1);     % 延迟1秒
    end
    
    close( h ); % 关闭进度条
    

    新建一个.m脚本文件,将以上实例中的代码复制下来(这段代码不涉及GUI界面的设计)。运行这段代码,就会发现,一边在figure窗口绘制正弦曲线,前面的进度条也一边显示执行进度。

    但是你会发现,之所以能够实现上述效果,也是因为waitbar()嵌入在for循环内,相当于将绘制正弦曲线的工作划分成了十个阶段。正弦曲线绘制出一点,进度条也可以跟着更新一点。

     

    十二、自己绘制的GUI界面菜单栏保留MATLAB Figure窗口菜单栏的工具条

    在 GUI 的 XXX_OpeningFcn() 函数下插入下面这行代码:

    set( hObject, 'toolbar', 'figure' ); % 在菜单栏显示figure工具条的内容
    
    % 这样就可以在自己做的GUI界面继续使用工具条的一些功能


    十三、自定义GUI界面中菜单栏下的工具条

    上面的问题十二,是直接保留figure窗口的工具条。而本问题是自定义GUI界面的工具条。比如想在自己设计的GUI界面中使用到放大、缩小、3D旋转等功能。

    具体方法:

    GUI编辑界面的上方菜单栏‘Tools’——‘Toolbar Editor...’:

    进入之后(下图所示),左边有一些工具可供选择,双击想要的工具,或者单击选中想要的工具,再点击右边的‘Add’。并且可以设置工具的图标(CData)、Tag、Clicked Callback(回调函数)。

    本问题也可以参考下面的网址:

    Matlab GUI的菜单和工具栏常用操作——讲解自定义菜单栏和工具条

    GUI界面添加菜单栏工具栏问题(点击进入),该网址内二楼提供了一个PDF文档,可以说是比较好的入门学习资料。

     

    十四、怎样将制作的GUI界面定位在屏幕中央?

    运行GUI时,期望它出现在屏幕中央位置。提供以下四种方法:

    需要选择其中一种代码,将其放置在GUI界面的XXX_OpeningFcn()函数下即可。  推荐使用前三种实现,简洁实用。

    movegui( handles.figure1, 'center' ) % figure1为当前GUI界面的Tag
    movegui( gcf, 'center' ); % 将GUI界面放置在桌面中央
    movegui( hObject, 'center' ); % 将GUI界面放置在桌面中央
    set( hObject, 'Units', 'pixels' );
    figuresize = get( hObject, 'Position' );
    screensize = get( 0, 'screensize' ); % 获取屏幕大小
    set( gcf, 'outerposition', [(screensize(3)-figuresize(3))/2,(screensize(4)-figuresize(4))/2,figuresize(3),figuresize(4)]);
    

    该问题参考网址:一个GUI的问题,制作的界面怎样定位在屏幕中间?

       


    PS:在进行MATLAB GUI界面编程学习过程中,也发现了网上的一些不错的学习资料,现将网址链接罗列在下面:

    [1] MATLAB GUI的菜单和工具栏常用操作——讲解自定义菜单栏和工具条

    [2] GUI界面添加菜单栏工具栏问题——该网页内二楼提供了一个PDF文档(一个实例搞定MATLAB界面编程),也是一个比较好的入门学习资料。

    [3] 关于MATLAB GUI的一些经验总结

    [4] MATLAB GUI 新手入门——最基本的几个概念

    [5] MATLAB GUI 基础编程——MATLAB 中文论坛相关帖子整理——总结整理了MATLAB编程相关的一百多个问题,不局限于GUI设计。

     

    展开全文
  • Matlab GUI 界面编程:界面左上角图标更改 在界面的m文件中,找到界面的OpeningFcn函数 % --- Executes just before day1 is made visible. function day1_OpeningFcn(hObject, eventdata, handles, varargin) %...

    Matlab GUI 界面编程:界面左上角图标更改

    在界面的m文件中,找到界面的OpeningFcn函数

    % --- Executes just before day1 is made visible.
    function day1_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 day1 (see VARARGIN)
    h = handles.figure1; %获取句柄
    newIcon = javax.swing.ImageIcon('图标.jpg'); %读取图片文件
    figFrame = get(h,'JavaFrame');
    figFrame.setFigureIcon(newIcon);
    % Choose default command line output for day1
    handles.output = hObject;
    % Update handles structure
    guidata(hObject, handles);
    
    展开全文
  • Matlab GUI 界面编程:将GUI打包成exe 20191206 命令行输入: mbuild -setup 回车,matlab会显示 MBUILD 配置为使用 'Microsoft Visual C++ 2015 Professional (C)' 以进行 C 语言编译。 要选择不同的语言,...
  • Matlab GUI 界面编程:显示文件路径

    千次阅读 2019-12-06 11:53:43
    Matlab GUI 界面编程:显示文件路径 20191206 1.添加按钮 2.添加”可编辑文本“控件 将”可编辑文本“控件 string 属性中的内容清空 3.在按钮的回调函数下,编写程序 % --- Executes on button press in ...
  • Matlab GUI 界面编程:添加按钮背景图片 20191206 1.新建按钮, 2.在界面m文件中,找到界面的OpeningFcn函数 % --- Executes just before day1 is made visible. function day1_OpeningFcn(hObject, eventdata,...
  • Matlab GUI 界面编程:选择图片并显示在界面中 20191206 1.新建axes 2.在axes的createFcn函数中编写程序 imshow('xx.png');
  • matlab GUI界面编程总结

    2019-10-08 12:34:10
    去年做了一些关于Matlab GUI的程序,现在又要做... 创建Matlab GUI界面通常有两种方式: 1,使用 .m 文件直接动态添加控件 2. 使用 GUIDE 快速的生成GUI界面显然第二种可视化编辑方法算更适合写大型程序。一:创建GU...
  • 当然,我这里说的是,您首先要有一定的 MATLAB编程基础。还有,我的 MATLAB 版本是 2008a。在 2008a 以前的版本中没有工具栏编辑器,如果需要工具栏要手动写程序,这个我就不多讲了。好了,废话少说,跟我来吧
  • Matlab GUI 界面编程:保存坐标系中的图片 20191206 在表示保存 的按钮 的回调函数中: h = figure('visible','off'); new_axes = copyobj(handles.axes1,h);%axes1表示坐标系对象 set(new_axes,'Units','...
  • Matlab GUI 界面编程:判断可编辑文本框输入的是否为数字 20191206 在可编辑文本框的回调函数中: input = str2num(get(handles.edit1,'string')); if isempty(input) msgbox('请输入数字','确认','error'); set...
  • (这里使用MATLAB的guide工具来完成界面编程) 下面提供几种解决方式: 方法一: 如果不强调一定要用星号来隐藏所输入的密码字符,则可以直接设置Edit Text控件的属性“FontName”来完成密码隐藏功能。 具体地,...
  • Matlab GUI 界面编程:界面背景设置

    千次阅读 2019-12-06 11:29:00
    使用matlab 自带的GUIDE进行界面设计-界面背景 matlab R2016b 1.新建APP选项中,选中GUIDE 2.选择新建空白GUI,并将图像保存 3.在弹出的空白界面中,点击右键,查看回调,选中createFcn; 进入m文件, % --...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 417
精华内容 166
关键字:

matlabgui界面编程

matlab 订阅