经典GUI基础入门:MATLAB中GUI用户图形界面学习
- 格式:pdf
- 大小:577.31 KB
- 文档页数:15
第 8 章 图形用户界面GUI假如读者所从事的数据分析、解方程、计算结果可视工作比较单一,那么一般不会考虑图形用户界面(Graphical User Interfaces ,GUI )的制作。
但是如果读者想向别人提供某种新的设计分析工具,想体现某种新的设计分析理念,想进行某种技术、方法的演示,那么图形用户界面也许是最好的选择之一。
MATLAB 本身提供了很多的图形用户界面,如sisotool “单输入单输出控制系统设计工具”、fdatool “滤波器设计和分析工具”等。
这些工具的出现不仅提高了设计和分析效率,而且改变原先的设计模式,引出了新的设计思想,改变了和正在改变着人们的设计、分析理念。
正是出于这种观察,作者将图形用户界面内容列入本教程。
本章由四个精心设计的算例组成。
这四个算例,一方面尽可能多地向读者展现构成GUI 的各种控件或组件,另方面借助算例中回调函数的编写较快地将读者引向GUI 制作的纵深。
本书作者相信:读者只要耐心地按照示例进行操作,便能在愉快感受GUI 成功制作的同时,事半功倍地掌握GUI 的制作技巧。
8.1 图形用户界面入门示例【例8.1-1】为演示归一化二阶系统121)(2++=s s s G ζ中阻尼比ζ对单位阶跃响应的影响,需要制作如图8.1-1所示的用户界面图8.1-11)图8.1-2 进入GUIDE开发环境的默认引导对话窗图8.1-3 默认的空白用户界面开发环境GUIDE 2)●●点选“轴Axes”图标;●点选“静态文本框Static Text”图标●点选“可编辑文本框Edit Text ”图标图8.1-4 3)界面组件的参数设置●用户界面窗的参数设置⏹,再点击界面编辑器工具条上的图标,图8.1-5 ●●●●图8.1-6 4)●点击工具条上的图标,●●●图8.1-7图8.1-85)●,点击HOME工具带NAVIGATE导航区上的Go To转至图标●●get(hObject,'String'); %zeta=str2double(get(hObject,'String')); %handles.t=0:0.05:15; %handles.y=step(tf(1,[1,2*zeta,1]),handles.t); %cla %line(handles.t,handles.y) %●●,再点击界面编辑器(或M文件编辑器)上的图标,图8.1-9图8.1-106)〖说明〗8.2 控件创建及应用示例本小节仍以算例为依托,详细讲述用户界面的创建步骤和注意要点。
第七讲MATLAB图形⽤户界⾯(GUI)设计第7讲MATLAB图形⽤户界⾯(GUI)设计图形⽤户界⾯(GUI, Graphical User Interface)是由图形控件构建的⽤于⼈与计算机交互信息的界⾯。
在图形⽤户界⾯上,⽤户可以根据界⾯上的提⽰信息完成⾃⼰的⼯作,⽽不需要记忆⼤量繁琐的命令,只需通过⿏标、键盘等便捷的⽅式与计算机交互信息、选择想要运⾏的程序、控制程序的运⾏、实时显⽰图形信息。
MATLAB创建的图形⽤户界⾯对象有三类:⽤户界⾯控件,如按钮、列表框、编辑框等;下拉菜单,如菜单、⼦菜单;内容菜单,如弹出式菜单。
⼀、命令⾏建⽴⽤户界⾯的⽅法1、创建控件命令:uicontrol调⽤格式:1)uicontrol(‘PropertyName1’,value1, ‘PropertyName2’,value2,……)功能:在当前图形⽤户的界⾯上,应⽤当前制定的属性值创建控件;2)h=uicontrol(‘PropertyName1’,value1, ‘PropertyName2’,value2,……)功能:在当前图形⽤户的界⾯上,应⽤当前制定的属性值创建控件,并返回控件的句柄;3)uicontrol(FIG, ‘PropertyName1’,value1, ‘PropertyName2’,value2,……)功能:在句柄FIG指定的图形⽤户界⾯上,创建控件;4)h=uicontrol(FIG, ‘PropertyName1’,value1, ‘PropertyName2’,value2,……) 功能:在句柄FIG指定的图形⽤户界⾯上,创建控件,并返回控件的句柄。
说明:函数中的PropertyName参数的参数值有:Push buttons(命令按钮)、sliders (滚动条控件)、Radio button(单选按钮)、Check box(复选框)、Edit text (可编程⽂本框)、Static text(静态⽂本框)、Pop_up menus(弹出式菜单)、listbox(列表框)、Toggle button(开关按钮)、Axes(坐标轴)、Panel(⾯板控件)、Button group(按钮组框)、ActiveX control(ActiveX 控件)。
如果没有图形用户界面(GUI)我们只能从命令行(Command Window)中调用相关程序,这相对比较繁琐,并且不是所有用户都是这个能力。
就好比计算机的 DOS 系统,在有windows的情况下,您会选择DOS吗?当然我们也不排除骨灰级的人物!在本节教程我们主要针对没有G UI 创建和使用经历的网友,但是必要的M ATLAB基础知识是需要的。
在教程中我们将创建一个简单的GUI程序,它执行两个数的加法运行,然后显示其运算结果。
一、打开和创建GUI界面1、首先打开Matlab,在Command Window中输入guide回车2、此时打开GUI编辑器GUIDE(GUI Developer的缩写)2.1 界面上有两个标签也“Creat New GUI”和“Open Existing GUI”如果创建新的GUI此时我们选择第一个标签页,但如果打开其它已经存在的GUI 就点击第二个标签吧2.2 这里我们选择第一个标签下的“Blank GUI”(空白 GUI),下面还有几个系统GUI模版,你可以根据需要选择其它的。
2.3 点击“OK”我们正式进入GUIDE界面,呵呵,是不是感觉似曾相识3、添加你需要的控件到figure中在添加控件之前,您最好对您的GUI界面布局已经有一定的构思了,否则盲目性太大了不利于您的编程。
下面是我们构思的布局。
二、添加控件和设置属性在正式讲解之前,我们先讲解下GUI中的鼠标基本操作(a) 在左边的控件面板中鼠标左击选择您需要的控件,然后放开鼠标(b) 在右边的figure中按住左键,画出您的控件,于是空间就在figure上(c) 你可以用鼠标拖拽figure上所有控件,来改变他们的位置(d) 在控件上双击鼠标左键(右击是快捷菜单)可打开控件属性面板1、从上面的布局构思,我们知道本GUI需要以下控件:三个“编辑文本框”(Edit Text):三个“静态文本框”(Static Text):一个“确定按钮”(Pushbutton)按照上面介绍的鼠标操作方法,将这6个控件拖到右边的figure中,如下图所示2、接下来就是编辑这些控件的属性好,下面从Static Text开始吧,双击其中一个“静态文本块”,将跳出该控件的“属性查看器”(Property Inspector)GUI控件的几个常用属性说明如下:position:指示空间在figure中的位置font**:字体相关属性string:相当如VB中的caption,就是显示在控件上的文字tag:控件的唯一标识符,相当于ID,我们需要tag来指定某一个空间2.1 在这里我们修改它的“string”属性为“+”2.2 同理修改它的“fontsize”属性为20在编辑完这些属性后,直接点击右上角的“关闭”按钮,关闭属性查看器,此时属性会自动保存。
在Matlab中使用GUI工具箱进行界面设计Matlab是一款功能强大的科学计算软件,它不仅可以进行数值计算和数据分析,还提供了用于图形用户界面(Graphical User Interface,简称GUI)的工具箱。
通过GUI工具箱,用户可以设计出直观、易用的界面,方便自己和他人使用和操作自己编写的程序。
GUI工具箱提供了丰富的可视化组件,如按钮、文本框、下拉菜单等,以及一系列的回调函数,使得在Matlab环境中进行GUI设计变得相对简单。
下面我将简单介绍一下在Matlab中使用GUI工具箱进行界面设计的流程和常用技巧。
首先,打开Matlab软件,创建一个新的GUI应用程序。
在Matlab命令窗口中输入"guide"命令,即可打开GUI编辑器。
在GUI编辑器中,可以选择默认的空白界面或基于模板的预设界面进行设计。
在设计界面之前,需要明确自己的需求和设计目标。
例如,设计一个简单的计算器界面,包含输入框、按钮和显示框等组件。
接下来,可以通过拖拽和放置组件等方式来设计界面。
在GUI编辑器的左侧可以看到工具箱,其中包含了各种可用的界面组件。
不同组件有不同的属性,可以通过调整属性值来实现个性化的设计。
例如,我们可以在界面上放置一个输入框组件,用于用户输入计算器的操作数。
在属性编辑器中,可以设置输入框的位置、大小、默认值等属性。
同样地,我们可以在界面上放置一个按钮组件,用于用户点击进行计算。
在属性编辑器中,可以设置按钮的文本、位置、大小等属性。
在设计完界面之后,需要为按钮组件添加回调函数,以响应用户的操作。
回调函数是一种特殊的函数,当用户与界面交互时会被调用。
回调函数可以通过访问界面上的组件来获取用户输入的数据,并进行相应的计算和操作。
在Matlab中,可以通过编辑按钮的"Callback"属性来设置回调函数。
例如,我们可以为计算按钮添加如下的回调函数:function calculateButton_Callback(hObject, eventdata, handles)operand = str2double(get(handles.inputBox, 'String'));result = calculate(operand);set(handles.outputBox, 'String', num2str(result));上述回调函数中,首先通过获取输入框组件的字符串,将用户输入的操作数转换为浮点数。
GUI指导教程系列(1):GUI入门基本操作为什么在MATLAB中要使用GUI呢?其实GUI就是Matlab中的Visual Basic,是面向对象的编程,可以使Matlab程序的终端用户,即使不懂的Matlab也可以轻易操作该程序!如果没有图形用户界面(GUI)我们只能从命令行(Command Window)中调用相关程序,这相对比较繁琐,并且不是所有用户都是这个能力。
就好比计算机的DOS 系统,在有windows的情况下,您会选择DOS吗?当然我们也不排除骨灰级的人物!在本节教程我们主要针对没有GUI创建和使用经历的网友,但是必要的MATLAB 基础知识是需要的。
在教程中我们将创建一个简单的GUI程序,它执行两个数的加法运行,然后显示其运算结果。
好下面开始我们的教程!一、打开和创建GUI界面1、首先打开Matlab,在Command Window中输入guide回车2、此时打开GUI编辑器GUIDE(GUI Developer的缩写)2.1 界面上有两个标签也“Creat New GUI”和“Open Existing GUI”如果创建新的GUI此时我们选择第一个标签页,但如果打开其它已经存在的GUI 就点击第二个标签吧2.2 这里我们选择第一个标签下的“Blank GUI”(空白GUI),下面还有几个系统GUI模版,你可以根据需要选择其它的。
2.3 点击“OK”我们正式进入GUIDE界面,呵呵,是不是感觉似曾相识3、添加你需要的控件到figure中在添加控件之前,您最好对您的GUI界面布局已经有一定的构思了,否则盲目性太大了不利于您的编程。
下面是我们构思的布局。
二、添加控件和设置属性在正式讲解之前,我们先讲解下GUI中的鼠标基本操作(a) 在左边的控件面板中鼠标左击选择您需要的控件,然后放开鼠标(b) 在右边的figure中按住左键,画出您的控件,于是空间就在figure上(c) 你可以用鼠标拖拽figure上所有控件,来改变他们的位置(d) 在控件上双击鼠标左键(右击是快捷菜单)可打开控件属性面板1、从上面的布局构思,我们知道本GUI需要以下控件:三个“编辑文本框”(Edit Text):三个“静态文本框”(Static Text):一个“确定按钮”(Pushbutton)按照上面介绍的鼠标操作方法,将这6个控件拖到右边的figure中,如下图所示2、接下来就是编辑这些控件的属性好,下面从Static Text开始吧,双击其中一个“静态文本块”,将跳出该控件的“属性查看器”(Property Inspector)GUI控件的几个常用属性说明如下:position:指示空间在figure中的位置font**:字体相关属性string:相当如VB中的caption,就是显示在控件上的文字tag:控件的唯一标识符,相当于ID,我们需要tag来指定某一个空间2.1 在这里我们修改它的“string”属性为“+”2.2 同理修改它的“fontsize”属性为20在编辑完这些属性后,直接点击右上角的“关闭”按钮,关闭属性查看器,此时属性会自动保存。
回到GUIDE,如果控件上的文字被部分隐盖,此时可以通过鼠标拖拽改变控件的大小。
二、添加控件和设置属性在正式讲解之前,我们先讲解下GUI中的鼠标基本操作(a) 在左边的控件面板中鼠标左击选择您需要的控件,然后放开鼠标(b) 在右边的figure中按住左键,画出您的控件,于是空间就在figure上(c) 你可以用鼠标拖拽figure上所有控件,来改变他们的位置(d) 在控件上双击鼠标左键(右击是快捷菜单)可打开控件属性面板1、从上面的布局构思,我们知道本GUI需要以下控件:三个“编辑文本框”(Edit Text):三个“静态文本框”(Static Text):一个“确定按钮”(Pushbutton)按照上面介绍的鼠标操作方法,将这6个控件拖到右边的figure中,如下图所示2、接下来就是编辑这些控件的属性好,下面从Static Text开始吧,双击其中一个“静态文本块”,将跳出该控件的“属性查看器”(Property Inspector)GUI控件的几个常用属性说明如下:position:指示空间在figure中的位置font**:字体相关属性string:相当如VB中的caption,就是显示在控件上的文字tag:控件的唯一标识符,相当于ID,我们需要tag来指定某一个空间2.1 在这里我们修改它的“string”属性为“+”2.2 同理修改它的“fontsize”属性为20在编辑完这些属性后,直接点击右上角的“关闭”按钮,关闭属性查看器,此时属性会自动保存。
回到GUIDE,如果控件上的文字被部分隐盖,此时可以通过鼠标拖拽改变控件的大小2.3 重复上面的操作(1)将第二个“Static Text”的“string”改为“=”,“fontsize”为20(2)第三个“Static Text”的“string”改为“My Adder GUI”,“fontsize”为20于是,我们将得到如下所示的GUI界面2.4 下面双击Edit Text,修改编辑文本框的属性(1)第一个“Edit Text”的用来存储第一个加数,我们将“string”改为“0”,“tag”改为“input1_editText”(2)第二个“Edit Text”的用来存储第二个加数,我们将“string”改为“0”,“tag”改为“input2_editText”(3)第三个“Edit Text”的“string”改为“0”,“tag”为“answer_stat ic Text”2.5 修改Pushbutton按钮的属性,“string”改为“Add!”,“tag”改为“a dd_pushbutton”再次预览下我们现在得到的GUI界面3、重新布局和移动控件位置,使其美观将上面编辑完的GUI程序保存为myAdder,此时在当前目录下,Matlab将自动生成如下来个两个文件myAdder.m和myAdder.fig。
.fig文件包含了程序的图形用户界面,.m文中包含了GUI所需的回调函数和其他必须代码。
三、书写GUI回调函数(callback)代码在保存GUI程序时,Matlab会自动生成.fig和.m文件,其中的.m就是我们现在要操作的对象。
我们就是M文件中添加控件的回调函数相应用户的操作!这也是GUI编程的核心内容,它要求你必须掌握Matlab基本编程以及图形句柄语句!打开.m文件,发现里面有很多function的代码,看得我们眼花缭乱,呵呵,不要胆怯!本教程是初级教程,我们只涉及里面的callback,其他的我们可以暂时置之不理!至于其它的我们以后的教程中对做相关介绍!在正式讲解之前,一个小使用技巧,Matlab Editor(代码编辑器)工具栏显示函数按钮,可以让我们快速跳转我们需要的函数位置!这个在.m内容很多的时候很有用哦!1、在Editor中工具栏的函数Show Function中选择input1_editText_Callbac k或者右击tag为input1_editText的编辑文本框,View Callback→Callback2、此时光标会跳转到.m文件的function input1_editText_Callback处,方便我们直接编辑1.function input1_editText_Callback(hObject, eventdata, handles)2.% hObject handle to input1_editText (see GCBO)3.% eventdata reserved - to be defined in a future version ofMATLAB4.% handles structure with handles and user data (see GUIDATA)5.6.% Hint: get(hObject,'String') returns contents of input1_editText as text7.% str2double(get(hObject,'String')) returns contents of8.% input1_editText as a double复制代码在上面代码下添加如下MATLAB代码1.% handles 包含figure中所有图形对象句柄的结构体,如果我们想引用tag为mytag的控件,使用handles.mytag2.% set/get 函数是用来设置/获取某个控件属性3.% 使用get命令获取第一个加数,并将它转换成数值4.input = str2num(get(hObject,'String')); % string属性是字符串,所以必须转换成数值5.6.% 检验输入是否为空,是则将它置为07.if (isempty(input))8.set(hObject,'String','0')9.end10.11.% 保存handles结构体,只要在handles结构体有改变时,才需要保存12.guidata(hObject, handles); % 这里由于handles没有改变,故这里其实没有必要,但是为了避免潜在的不必要麻烦,建议在所有Callback最后都添加该命令复制代码3、为input2_editText_Callback添加完全相同的代码4、编辑add_pushbutton_Callback回调函数,使用上面提到的方法,将光标定位到1.% --- Executes on button press in add_pushbutton.2.function add_pushbutton_Callback(hObject, eventdata, handles)3.% hObject handle to add_pushbutton (see GCBO)4.% eventdata reserved - to be defined in a future version ofMATLAB5.% handles structure with handles and user data (see GUIDATA)复制代码在后面我们添加上如下代码1. a = get(handles.input1_editText,'String');2. b = get(handles.input2_editText,'String');3.% a和b是字符串变量,我们需要使用str2double函数将其转换为数值4.% 然后才能相加,否则字符串是没法相加的5.total = str2num(a) + str2num(b); % 格式转换,转换为数值6.% 由于string属性是字符串,所以必须将两个数的和转换为字符串7. c = num2str(total); % 转换为字符串8.% 将结果赋值给answer_staticText空间的string属性,于是就可以显示结果了9.set(handles.answer_staticText,'String',c);10.guidata(hObject, handles); % 更新结构体复制代码恭喜您,到此为此这个GUI程序就完成了!接下来就可以运行和演示它了!有一个小技巧要告诉大家的,如果您在第一次保存GUI程序时,不想让Matlab 为每一个callback回调函数自动生成注释文本,可以如下操作:File→Prefer ences...如果不想让Matlab自动生成fig文件,而只是生成M文件,可以如下操作:To ols→GUI Option四、GUI程序打开、运行和发布1、想在GUIDE中打开一个写好的GUI程序,可有两种方法1.1 如上面所说的,在打开GUIDE界面时,我们可以选择“Open Existing GUI”,然后选中你需要打开的GUI程序1.2 直接在Current Directory选中*.fig文件,然后右击选择“Open In GUID E”2、运行编辑好的GUI程序方法主要有三种方法2.1 点击GUIDE工具栏的run按钮,如下图所示2.2 从Command Window命令行运行,首先将MATLAB当前目录切换到*.fig和*. m文件所在目录(两个必须同在当前目录或者都在搜索路径下)接着在Command Window中输入GUI的文件名(不需要扩展名)myAdder,然后回车2.3 直接在Current Directory中选中myAdder.m,右击选择“Run File”即可通过上面三种方法中任意一种,GUI程序将开始运行,并显示如下3、执行GUI程序功能在两个文本框中输入分别输入两个加数,然后点击Add!按钮,此时和将显示在“=”右边的文本框中!。