|||
用户图像界面编程(GUI)是推广计算机软件的重要步骤,只有有良好的用户图像界面,别人使用你的软件才会变得非常容易,每一个按钮,下拉菜单都应该有很好的直观意义。如果用户按一下按钮,那按钮就要执行相应的功能,比如这个按钮上写着平均值,那按一下平均值这个按钮软件就应该会算出输入数据的平均值。
在matlan命令窗口敲入guide命令,就会出现一个设计GUI的界面,你可以现在几个按钮,几个文本窗口,几个下拉菜单,切换按钮(toggle button)等。设计GUI的界面如下面第一个图所示:
在GUI设计窗口内,我们可以加上一个按钮和一个静态文本窗口,然后保存,就会自动存成一个下面的以figure为格式的文件,同时自动生成一个matlab源代码程序,这些一个GUI的雏型就有了。下一步就是给系统生成的程序添加功能,你想让这个按钮做什么,你就要把他应该执行的命令表述清楚。计算机跟人的不同就是他只能执行死命令,比如你让它把几个球拿起来,你必须说明有那个手指,用多大,呈多大角度,球的起始和终止作表,动作路径,球和碗在文件夹,缺少任何一下就一定会给你一个bug, bug就是臭虫,即程序中阻止其运转的臭虫。
然后打开guide生成的程序,在里面添加要执行的命令,比如每按一下男,文件上的数字增加一个,那我就在文本框内显示按里 多少下按钮。guide产生的matlab程序包括打开figure文件的方程,每一个按钮有有对应的方程,方程就是一个执行独立功能或任务的子程序。比如我这里有一个按钮,名字是Ckick Here, 那我就有一个相同于他的子方程,方程名字就是:
function varagout = MyFirstButton_callback(h, eventdata, ... handles, varargin)
MyFirstButton就是按钮的标签即名字,每个按钮都有自己的名字,callback就是说这个方程是通过一个按钮激发(call)的程序,你点那个按钮这个方程就要run或执行。括号里的就是方程的argument, 即输入参数或数据,handles即把手,通过把手可以找到这个方程或程序,varargin即任何格式的输入,varagout即任何格式的输出。
function varagout = MyFirstButton_callback(h, eventdata, ... handles, varargin)
% declare and initialize variable to store the count persistent count
%百分号后面的东西都是注解,好的程序应该有很多注解,这样方便其它人理解。
if isempty(count)
count = 0;
end;
%这个if循环是先问一下,我按没按过那个按钮。
%按了就把计数(count就是计数)加上1。
count = count +1;
%下面是产生一个新的字符串。
str = sprintf('Total Clicks: %d', count);
%如果你用过Linux,对上述表达一定很熟悉。print就是告诉程序在窗口打印或输出东西,printf中的f说明输出的东西要遵从一定的格式,f就是format. 括号中引号的部分就直接输出的,%d就是一个格式表达式,即参数count要按%d的格式输出,d就是decimal, 小数格式。
%最后每按一下按钮更新一下文本框
set (handles.MyFirstText, 'String', str);
整个程序的执行过程如下面所示:
如果我按上面的绿色按钮4次,文本框里的数字就会变成4,我就会得到下面的结果:
很多文献上发表的程序比上面的程序无非就是多了一些按钮,一些菜单,那些按钮具有更科学的意义,如计算FRET的统计分部,进行隐性马尔科夫模型分析等。下面的一个例子就是单分子FRET的matlab GUI数据分析软件窗口。
下面这个例子就是单分子FIONA(fluorescent image with one nanometer resolution)软件的分析窗口。
关于更多内容请参考附件。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-21 22:40
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社