【MATLAB GUI】 1. 普通按钮、静态文本和可编辑文本

news2025/3/12 22:32:43

看B站up主freexyn的freexyn编程实例视频教程系列36Matlab GUI的学习笔记

文章目录

  • 初步认识+普通按钮
  • 静态文本和可编辑文本
  • 设计一个简易计算机

初步认识+普通按钮

任务要求:点击一次“100”按钮,按钮上的文字值就递增1;点击“close”按钮,关闭所有窗口

  1. 命令行打开GUI:命令行guide,或者appdesigner

  2. 如果左边方块没有文字说明,则点击文件-预设-在组件选项板中显示名称-确定
    在这里插入图片描述
    在这里插入图片描述

  3. 调整设计界面大小,点击普通按钮,拉到设计界面,调整普通按钮大小

    在这里插入图片描述

  4. 双击这个普通按钮,或者右键点击属性,修改String、FontSize等内容。修改完毕后点击×号退出
    在这里插入图片描述

  5. 重复以上操作,得到以下
    在这里插入图片描述

  6. 点击保存,命名为test1.fig,同时自动生成test1.m文件

  7. 对于test1.m文件:

    **function varargout = test1(varargin)**
    % TEST1 MATLAB code for test1.fig
    %      TEST1, by itself, creates a new TEST1 or raises the existing
    %      singleton*.
    %
    %      H = TEST1 returns the handle to a new TEST1 or the handle to
    %      the existing singleton*.
    %
    %      TEST1('CALLBACK',hObject,eventData,handles,...) calls the local
    %      function named CALLBACK in TEST1.M with the given input arguments.
    %
    %      TEST1('Property','Value',...) creates a new TEST1 or raises the
    %      existing singleton*.  Starting from the left, property value pairs are
    %      applied to the GUI before test1_OpeningFcn gets called.  An
    %      unrecognized property name or invalid value makes property application
    %      stop.  All inputs are passed to test1_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 test1
    
    % Last Modified by GUIDE v2.5 18-Feb-2024 15:21:53
    
    % Begin initialization code - DO NOT EDIT
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @test1_OpeningFcn, ...
                       'gui_OutputFcn',  @test1_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 test1 is made visible.
    function test1_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 test1 (see VARARGIN)
    
    % Choose default command line output for test1
    handles.output = hObject;
    
    % Update handles structure
    guidata(hObject, handles);
    
    % UIWAIT makes test1 wait for user response (see UIRESUME)
    % uiwait(handles.figure1);
    
    % --- Outputs from this function are returned to the command line.
    function varargout = test1_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 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)
    
    % --- 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)
    
    1. function varargout = test1(varargin):函数名称即文件名称,包含了方才设计的图形文件的一些初始化信息,不要修改

    2. function test1_OpeningFcn(hObject, eventdata, handles, varargin):回调函数,当打开一个图形文件的时候,所有的控件数据都设置好了之后,把图形界面呈现在电脑屏幕之前,该函数运行,对界面进行一些初始化处理

    3. function varargout = test1_OutputFcn(hObject, eventdata, handles) :输出函数,有输出参数,在打开函数OpeningFcn()返回控制之后,把控制权返回给命令行窗口之前,执行该函数,执行结果会输出到命令行窗口中

    4. pushbutton1_Callback、pushbutton2_Callback:两个组件的回调函数,在图形界面点击按钮会执行对应回调函数,其中的pushbutton1、pushbutton2对应组件的Tag

      function pushbutton1_Callback(hObject, eventdata, handles)
      %hObject是点击对象的句柄,即点击“100”按钮时,会返回这个按钮的句柄,
      %以此来区分点击对象是“100”,而不是“close”
      
      %eventdata是一个保留字段,在不同的控件中有不同用法,在按钮中其实是没什么意义的
      
      %handles是结构数组,包含整个界面控件信息以及数据信息
      
  8. 现在回到设计界面

  9. 给close按钮添加回调:对“close”按钮点击右键,查看回调,单击callback,会定位到.m文件中的对应位置,进行代码编辑,保存

    % --- 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)
    clear all %清除所有变量
    close all %关闭所有窗口
    

    点击.fig页面中的绿色三角形,运行,点击运行界面的“close”,图形窗口就关闭了

  10. 给100按钮添加回调:要求实现点击一次“100”按钮,按钮上的文字值就递增1。步骤同上

    % --- Executes on button press in pushbutton1.
    function pushbutton1_Callback(hObject, eventdata, handles)
    %hObject是点击对象的句柄,即点击“100”按钮时,会返回这个按钮的句柄,
    %以此来区分点击对象是“100”,而不是“close”
    %eventdata是一个保留字段,在不同的控件中有不同用法,在按钮中其实是没什么意义的
    %handles是结构数组,包含整个界面控件信息以及数据信息
    
    %get(h,属性)获得图形对象h上的属性值,是字符串格式
    s=get(hObject,'string');
    
    %set(h,Name,Value) 使用一个或多个名称-值参数设置指定图形对象h的属性
    set(hObject,'string',num2str(str2num(s)+1));
    

静态文本和可编辑文本

任务要求实现:在可编辑文本中输入文字,回车,立即显示在静态文本框中

  1. 可编辑文本:可以输入内容

  2. 静态文本:仅用于显示字符

  3. 界面设计如下:属性不做修改,保存为test2.fig
    在这里插入图片描述

  4. 双击.fig页面中的可编辑文本,点击查看回调,点击callback

  5. 自动定位到.m文件中的edit1_Callback,根据任务要求进行代码编辑

    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
    
    s=get(hObject,'string');
    %handles包含整个界面控件信息以及数据信息,
    %**handles.text2即引用了另一个控件的数据,text2是静态文本框的tag值**
    set(handles.text2,'string',s);
    

    handles可帮忙引用其他控件的数据

  6. 保存.m,在.fig界面运行即可
    在这里插入图片描述

设计一个简易计算机

普通按钮、静态文本和可编辑文本的综合运用

  1. 先用普通按钮设计,属性只修改string

    在这里插入图片描述

  2. 增加静态文本:属性修改backgroungcolor,防止和页面背景融为一体,同时把string删除。该框用于显示计算过程和结果

    在这里插入图片描述

  3. 编写各个普通按钮的回调函数:任务要求把计算过程和结果在静态文本框中显示出来

    1. 0~9和+、-、/的按钮

      % --- Executes on button press in pushbutton1.
      function pushbutton1_Callback(hObject, eventdata, handles)
      % 如果只是
      % s=get(hObject,'string');
      % set(handles.text2,'string',s);
      % 则会导致无法输入11,只能输入1
      s0=get(handles.text2,'string');
      s=get(hObject,'string');
      set(handles.text2,'string',[s0,s]);
      
    2. ×的按钮:×不能运算,*才可以运算

      % --- Executes on button press in pushbutton16.
      function pushbutton16_Callback(hObject, eventdata, handles)
      % hObject    handle to pushbutton16 (see GCBO)
      % eventdata  reserved - to be defined in a future version of MATLAB
      % handles    structure with handles and user data (see GUIDATA)
      s0=get(handles.text2,'string');
      s=get(hObject,'string');
      set(handles.text2,'string',[s0,'*']);
      
    3. =和C的按钮

      % --- Executes on button press in pushbutton18.
      function pushbutton18_Callback(hObject, eventdata, handles)
      % hObject    handle to pushbutton18 (see GCBO)
      % eventdata  reserved - to be defined in a future version of MATLAB
      % handles    structure with handles and user data (see GUIDATA)
      s0=get(handles.text2,'string');
      %eval(expression)返回 expression 的输出,数值型
      set(handles.text2,'string',num2str(eval(s0)));
      
      % --- Executes on button press in pushbutton19.
      function pushbutton19_Callback(hObject, eventdata, handles)
      % hObject    handle to pushbutton19 (see GCBO)
      % eventdata  reserved - to be defined in a future version of MATLAB
      % handles    structure with handles and user data (see GUIDATA)
      set(handles.text2,'string',[]);
      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1455604.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

边坡位移监测设备:守护工程安全的前沿科技

随着现代工程建设的飞速发展,边坡位移监测作为预防山体滑坡、泥石流等自然灾害的重要手段,日益受到人们的关注。边坡位移监测设备作为这一领域的关键技术,以其高精度、实时监测的特点,成为守护工程安全的重要武器。 一、边坡位移…

20-k8s中pod的调度-nodeSelector节点选择器

一、概念 我们先创建一个普通的deploy资源,设置为10个副本 [rootk8s231 dns]# cat deploy.yaml apiVersion: apps/v1 kind: Deployment metadata: name: dm01 spec: replicas: 10 selector: matchLabels: k8s: k8s template: metadata: …

零基础搭建 Kubernetes 集群

零基础搭建 Kubernetes 集群 1、简介 在数字化时代,容器技术已经变成了软件开发和部署的标准,而在众多容器管理工具中,Kubernetes(简称为 K8s)凭借其高效的资源管理、弹性伸缩和自我修复的能力,成为了行业…

第一个 Angular 项目 - 动态页面

第一个 Angular 项目 - 动态页面 使用的所有技巧都在下面的笔记里: [Angular 基础] - 数据绑定(databinding) [Angular 基础] - 指令(directives) 以上为静态页面,即不涉及到跨组件交流的内容 以下涉及到组件内的沟通,从这开始数据就“活”…

双向bfs P1032 字串变换

传送门https://www.luogu.com.cn/problem/P1032 找一个最短方案,考虑用bfs(没试过单向,但是系数很大) 更详细的解答 下面是代码理解(注释版) // Problem: // P1032 [NOIP2002 提高组] 字串变换 // …

分布式学习笔记

1. CAP理论 Consistency(一致性):用户访问分布式系统中的任意节点,得到的数据必须一致。 Availability(可用性):用户访问集群中的任意健康节点,必须得到相应,而不是超时…

OpenAI划时代大模型——文本生成视频模型Sora作品欣赏(一)

Sora介绍 Sora是一个能以文本描述生成视频的人工智能模型,由美国人工智能研究机构OpenAI开发。 Sora这一名称源于日文“空”(そら sora),即天空之意,以示其无限的创造潜力。其背后的技术是在OpenAI的文本到图像生成模…

svg图片构造QGraphicsSvgItem对象耗时很长的问题解决

目录 1. 问题的提出 2. 问题解决 1. 问题的提出 今天通过一张像素为141 * 214,大小为426KB的svg格式的图片构造QGraphicsSvgItem对象,再通过Qt的Graphics View Framework框架,将QGraphicsSvgItem对象显示到场景视图上,代码如下&…

用GPT-4开启“人类宝藏”

“GPT-4开启人类宝藏”意味着下面几个层面的含义: 知识与信息的访问:GPT-4作为一款强大的语言模型,通过学习海量的数据和信息资源,可以近乎实时地提供人类历史积累的知识、经验与智慧。用户可以通过询问或交互方式获取这些信息&am…

数据结构——单链表专题

目录 1. 链表的概念及结构2. 实现单链表初始化尾插头插尾删头删查找在指定位置之前插入数据在指定位置之后插入数据删除指定位之前的节点删除指定位置之后pos节点销毁链表 3. 完整代码test.cSList.h 4. 链表的分类 1. 链表的概念及结构 在顺序表中存在一定的问题: …

推荐彩虹知识付费商城免授权7.0源码

彩虹知识付费商城免授权7.0源码,最低配置环境 PHP7.2 1、上传源码到网站根目录,导入数据库文件:xydai.sql 2、修改数据库配置文件:/config.php 3、后台:/admin 账号:admin 密码:123456 4、前…

见智未来:数据可视化引领智慧城市之潮

在数字时代的浪潮中,数据可视化崭露头角,为打造智慧城市注入了强大的活力。不再被深奥的数据所束缚,我们通过数据可视化这一工具,可以更加接近智慧城市的未来。下面我就以可视化从业者的角度来简单聊聊这个话题。 数据可视化首先为…

【动态规划:最短编辑路径】的应用:excel diff功能

开篇说明 如果在这里获得过启发和思考,希望点赞支持!对于内容有不同的看法欢迎来信交流。 技术栈 >> java 邮箱 >> 15673219519163.com 描述 在游戏行业中通常使用excel做配表,修改配表是一个频繁的操作。在修改之后&#xff…

Python next函数

在Python编程中,next()函数是一个非常重要且常用的内置函数,用于迭代器对象中获取下一个元素。迭代器是一种可以逐个访问数据元素的对象,例如列表、元组、字典等。本文将深入探讨Python中的next()函数,包括基本用法、迭代器协议、…

STM32中断定时器的使用

使用systimer来产生较为精确的定时,之前使用for循环来产生。 用示例工程时产生错误,原因是调用F103的3种容量器件,需要更换S汇编头函数。 另外在工程设置中,需要把HD设置为MD,重新编译即可成功。

UVa1359/LA3491 Hills

题目链接 本题是2005年ICPC亚洲区域赛杭州欧赛区的H题 题意 平面上有 n(n≤500)条线段,其中每条线段的端点都不会在其他线段上。你的任务是数一数有多少个“没有被其他线段切到”的三角形(即小山)。如下图所示&#x…

NS安装-CentOS服务器安装Nightscout CGM

NS CGM 安装必要条件 有自己的云服务器好像没有2,有云服务器就行了 安装顺序 先安装数据库,目前支持的是 MongoDB ,官方推荐4,其实目前最新版本就行。可以用宝塔安装,比较简单克隆代码,我是放到 /opt/ns…

使用可靠的情报在危机中做出明智的决策

近年来,随着地缘政治威胁的增加,组织逐渐发现错误信息对危机时期做出关键决策的重大影响。国际 SOS 发现各种规模的企业都在努力分析危机期间 24/7 可用的大量信息,并使用可信来源及时提供决策信息,特别是为了员工的健康和安全&am…

PAM | 账户安全 | 管理

PAM PAM(Pluggable Authentication Modules,可插入式身份验证模块)是一个灵活的身份验证系统,允许我们通过配置和组合各种模块来实现不同的身份验证策略。 在 Linux 或类 Unix 系统中,常见的 PAM 模块包括以下几种类…

[深度学习] 深入理解什么是卷积神经网络

​ 🌈 博客个人主页:Chris在Coding 🎥 本文所属专栏:[深度学习] ❤️ 热门学习专栏:[Linux学习] ⏰ 我们仍在旅途 目录 1.卷积的定义 2.卷积的"卷"在哪里 3.什么又是卷积神…