关于GUI的一点心得体会

时间:2019-05-13 23:33:50下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《关于GUI的一点心得体会》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《关于GUI的一点心得体会》。

第一篇:关于GUI的一点心得体会

[Fig文件方式,即使用菜单File->New->GUI来设计界面] 首先值得注意的是,在低版本matlab上 制作的含GUI的m文件一般不能在高版本的matlab上面运行,但是从7.0版开始改进了一点,我试过 6.5版的含GUI的m文件可以在 7.0版上运行,但如果在7.0版上面修改过.fig文件,那么就不能回到6.5版上运行了(显示一堆错误,我没看懂,不知道能否通过修改使之重新可在 6.5版上运行,呵呵),而在7.0版上制作的含GUI的m文件就完全不能放到6.5版上运行了(也是同样的错误)。这可能是因为matlab各版本在 GUI上改动较大,所以都不支持向下兼容。也许兼容性差是使用GUI编写程序的最大麻烦。

其次,说说使用GUI的好处。不知道是否承袭了VC or BCB的习惯,我比较喜欢编写完程序后按快捷键运行(此时会自动保存m文件),但是,对于程序有输入参数的 时候,如果不采用GUI方式,这显然是行不通的――当然了,可以在command window按“向上”键然后重新改写你想要的参数。对于一些较大型的程序,正因为我比较偏向于按F5运行程序,所以我会选择使用GUI方式。不过GUI 方式的好处就远不止于此了,它可以把几个功能相关的模块集中起来,使得不需要重新关闭、运行就能得到不同的结果,便于比较;可以减少figure满天飞的现象,这在matlab中尤为明显;便于交互式地观看不同的数据,例如在我处理的fMRI问题中,希望观看每个三维点对应的时间序列,这时候需要提供交互式的选择„„不过,尽管GUI有很多好处,但是其缺点也是有的,除了上面提到的兼容性(移植性)以外,要管理、维护一个GUI界面也是比较麻烦的,相信有其他语言的界面设计经验的朋友也知道这点。

再 者,对GUI问题,说说我的一点经验吧。其实,matlab已经在这方面改进了不少,从控件的增加和教程的学习都可以看出来。例如6.5版本是没有 Panel和Button Group这两个控件的,在2006a版本中就新增了这两个控件(这个好像7.0版就有了,不确定);教程方面,也使用了最为直观的视频教学方式,建议新手看看Creating a GUI with GUIDE 和Creating Graphical User Interfaces两节。所以,操作上的细节我就不多讲了,自己摸索一下就ok了。至于编程时最为关键的参数传递问题,可以参考本论坛或者仿真论坛上面的“函数结构与参数传递”一文,作者整理得较完整,不过有点难懂。这里我简单说一下吧:

[转cwit]关于参数传递的方法:

1.在内存中提取:① 采用function的varargin和varargout传送,② 存在handle的ApplicationData中,③保存在handles里面。当然还有其他方法; 2.存在硬盘上,采用save和load;

3.用全局变量,最次的办法,有时却是最好的办法;

我想,对于这里处理的GUI问题,一般不会用到save和load命令(要 从mat文件读取数据初始化或者把数据存储到mat文件中例外),“function的varargin和varargout传送”的方法也不较少使用(因为对于控件的回调函数,matlab规定了输入参数为“hObject, eventdata, handles, varargin”,且一般没有返回值,所以不同于自定义的函数),所以剩下的方法就只有三种了: 1.存在handle的ApplicationData中――利用setappdata函数将数据保存在对象的“ApplicationData”属性中,利 用getappdata函数从对象的“ApplicationData”属性中提取数据,如果没有定义,就为空。例如,假设figure的tag属性是 figure1,则setappdata(handles.figure1,’A’,A)就可以把变量A存放到figure1的 “ApplicationData”属性中,名字为A,而B = getappdata(handles.figure1,’A’)就可以把figure1的“ApplicationData”属性中名字为A的变量赋给 B。setappdata和getappdata操作的对象,最好为figure_handle,便于管理和扩展。Matlab的高级编程和对象控制,将 大量使用这两个函数[转自cwit];

2.保存在handles里面――首先,这是访问控件的常用方法,注意到Tag是唯一标识控件的属性,也就说,如果一个控件的Tag属性是a,那么,在fig 对应的m文件中,只要含有“handles”作为其输入参数的函数中,就可以使用handles.a对该控件进行访问。既然句柄(相当于其他语言中的指 针)已经拿到手了,就任由“宰割”了(例如设置属性、存取数据等就比较容易了);其次,可以利用这种方法把自定义的变量保存在handles里面进行存取,这在matlab帮助的Creating a GUI with GUIDE一节中有具体介绍,不多说;

3.用全局变量的方法――这是我进行参数传递的常用方法,使用方法是:在两个函数体(当然可以是多个了,这里是主函数和子函数的意思)中使用前加入语句 “global A”,其中A是多个函数需要传递的变量名,多个变量用空格格开,句末不需要加分号。这种方法由于存放在硬盘上,存取速度会减慢,但是如果变量个数不多、或 者对该变量引用的函数不多,可以考虑用此办法(我尚未能领会cwit兄所说“最次的办法,有时却是最好的办法”之含义)。

至于其他有关GUI命令、控件属性和图形属性可以参考matlab的帮助,或者参考“GUI命令大全”、《精通GUI图形界面编程》(这两个本论坛有)、“Matlab图形图像属性”、“GUI.rtf”(这两个参见附件,后者下载后手动修改一下后缀名)。实际上,用得比较多的控件属性不外乎以下几种(高手例外):

Visible属性,例如axes、edit、button等,格式:set(handles.***, ‘Visible’, ‘on’);或者set(handles.***, ‘Visible’, ‘off’);

String属性,例如edit、text等,格式:str=get(handles.***, ‘String’)或set(handles.***,’String’,str);Enable属性,例如edit、button、text等,格式:set(handles.***, ‘Enable’, ‘on’);或者set(handles.***, ‘Enable’, ‘off’);

Value属性,例如radio button、check box等,格式:a=get(handles.***, ‘Value’)或set(handles.***,’Value’,1);或set(handles.***,’Value’,0);

留意一下响应函数的注释部分,有时候会得到提示的。例如,我的 matlab 2007a 中,在设计界面上增加了 listbox 控件后,m 文件的对应回调函数处显示如下:

%---Executes on selection change in listbox1.function listbox1_Callback(hObject, eventdata, handles)% hObject handle to listbox1(see GCBO)% eventdata reserved100*k/N)<= 1e-003 waitbar(k/N);i = i + step;end 其中i是控制进度条在何处刷新,k是程序的循环变量,N是程序循环的总次数。

使用 uicontrol 方式实现进度条的示例: 复制内容到剪贴板 代码: figure;e1 = uicontrol(gcf,'style','edit','BackgroundColor','w',...'unit','normalized','position',[0.35,0.6,0.02,0.25]);e2 = uicontrol(gcf,'style','edit','BackgroundColor','r',...'unit','normalized','position',[0.3525,0.6,0.015,0.01]);drawnow;n = 1000;ii = 1;for i = 1:0.01:n if(ii-100*i/n)<= 1e-003 set(e2,'position',[0.3525,0.6,0.015,0.01+0.24*i/n]);drawnow;ii = ii + 1;end end 【附录】转自cwit兄:

m文件与fig文件创建figure的十大差异——用代码写figure,并不是麻烦。如果你习惯了,或者熟悉了,会发现用代码实现guide编程,比GUI方便很多,功能也很强大。用m文件实现guide编程,相比GUI编程有几大差异: 1.代码可复用,节省成本;

2.GUI不能灵活创建uimenu,并且不能编辑其所有属性; 3.GUI还没有实现创建uitoolbox; 4.GUI不能创建所有axes的子对象;

5.写界面也有一些算法,在GUI中无法实现。而用m文件就可以实现在不同窗口尺寸下给对象以合适的位置; 6.m文件可以生成非常复杂的界面;

7.采用GUI编程,代码编译后依赖于*.fig文件; 8.m文件可以实现组件;

9.m文件创建的对象,可以方便的在handle中存取数据; 10.m文件可以将创建对象代码与动作执行代码很好的结合起来。

【注】关于两种方式的运行:

对于fig文件方式:fig文件记录的是控件的布局和属性等资源信息,m文件记录的是控件的响应消息(这是个人理解,更准确的介绍请参阅有关GUI的书籍,我懒得去查了,呵呵),两者缺一不可。所以,不能通过打开fig文件(如菜单中的Open命令)来运行该GUI,这种方式的运行方法有两种:打开该GUI对应的m文件,然后像普通m文件那样运行;打开该GUI的设计界面(菜单操作:FileNewGUIOpen Existing GUI,打开 fig 文件),然后点击设计界面工具栏上的那个像箭头一样的按钮

对于m文件方式:像普通m文件那样运行就可以了

先建立两个GUI,一个名为guidata1.fig guidata2.fig,它们的tag属性也分别为guidata1,guidata2。然后在guidata1.m中的opening function中加入下列语句:

setappdata(handles.guidata1,'Sai',1);

在guidata2.m中的opening function 中写入下列语句:

setappdata(handles.guidata2,'Sai',2);

下面我们分别在guidata1.fig guidata2.fig中放一个按钮和静态文本。接下来,在guidata1.m的按钮中加入下列程序:

guidata21=findobj('Tag','guidata2');if isempty(guidata21),errordlg('Not Open guidata2.fig','Error');

guidata22=guidata2();

Sai=getappdata(guidata22.guidata2,'Sai');

set(handles.text1,'String',num2str(Sai));else

guidata22=guihandles(guidata2);

Sai=getappdata(guidata22.guidata2,'Sai');

set(handles.text1,'String',num2str(Sai));end

在guidata2.m中的按钮中加入下列程序:

guidata12=findobj('Tag','guidata1');%查看guidata1.fig是否打开 if isempty(guidata12), %如果没有打开

guidata11=guidata1();%打开guidata1.fig,并且把句柄给guidata11

guidata11=guihandles(guidata11);%把guidata11转为可用的gui句柄

Sai=getappdata(guidata11.guidata1,'Sai');%读取句柄guidata11中的名为Sai的变量值,可以和其%%%%%%%%%opening function 中的对比setappdata(handles.guidata1,'Sai',1)

set(handles.text1,'String',num2str(Sai));else

guidata11=guihandles(guidata1);

Sai=getappdata(guidata11.guidata1,'Sai');

set(handles.text1,'String',num2str(Sai));end

然后随便打开某个fig文件,比如打开guidata1.fig,然后点其中的按钮,可以看到下面的静态文本上显示2,那么这个自然是从guidata2.fig中读出来的。而且会自动打开guidata2.fig.这里其实是用findobj首先看是否已经打开guidata1,如果没有打开,则打开,并将句柄转化为gui句柄。我在opening function 中是将名为Sai,值为1的变量存在了figure中,其实也可以存在其他控件中,比如在按钮上加一个应用程序数据其名为Sai,值为1,那么可以这么写 setappdata(handles.pushbutton1,'Sai',1),然后随时我们都可以通过getappdata setappdata来获取或设置其值。

而这里我推荐用这两个命令,如果你用handles来共享数据的话,一是他可能会被程序的其他控件改变,二是它容易和引用控件时想混淆。

第二篇:关于GUI的一点心得体会

[Fig文件方式,即使用菜单File->New->GUI来设计界面] 首先值得注意的是,在低版本matlab上 制作的含GUI的m文件一般不能在高版本的matlab上面运行,但是从7.0版开始改进了一点,我试过 6.5版的含GUI的m文件可以在 7.0版上运行,但如果在7.0版上面修改过.fig文件,那么就不能回到6.5版上运行了(显示一堆错误,我没看懂,不知道能否通过修改使之重新可在 6.5版上运行,呵呵),而在7.0版上制作的含GUI的m文件就完全不能放到6.5版上运行了(也是同样的错误)。这可能是因为matlab各版本在 GUI上改动较大,所以都不支持向下兼容。也许兼容性差是使用GUI编写程序的最大麻烦。

其次,说说使用GUI的好处。不知道是否承袭了VC or BCB的习惯,我比较喜欢编写完程序后按快捷键运行(此时会自动保存m文件),但是,对于程序有输入参数的 时候,如果不采用GUI方式,这显然是行不通的――当然了,可以在command window按“向上”键然后重新改写你想要的参数。对于一些较大型的程序,正因为我比较偏向于按F5运行程序,所以我会选择使用GUI方式。不过GUI 方式的好处就远不止于此了,它可以把几个功能相关的模块集中起来,使得不需要重新关闭、运行就能得到不同的结果,便于比较;可以减少figure满天飞的现象,这在matlab中尤为明显;便于交互式地观看不同的数据,例如在我处理的fMRI问题中,希望观看每个三维点对应的时间序列,这时候需要提供交互式的选择„„不过,尽管GUI有很多好处,但是其缺点也是有的,除了上面提到的兼容性(移植性)以外,要管理、维护一个GUI界面也是比较麻烦的,相信有其他语言的界面设计经验的朋友也知道这点。

再 者,对GUI问题,说说我的一点经验吧。其实,matlab已经在这方面改进了不少,从控件的增加和教程的学习都可以看出来。例如6.5版本是没有 Panel和Button Group这两个控件的,在2006a版本中就新增了这两个控件(这个好像7.0版就有了,不确定);教程方面,也使用了最为直观的视频教学方式,建议新手看看Creating a GUI with GUIDE 和Creating Graphical User Interfaces两节。所以,操作上的细节我就不多讲了,自己摸索一下就ok了。至于编程时最为关键的参数传递问题,可以参考本论坛或者仿真论坛上面的“函数结构与参数传递”一文,作者整理得较完整,不过有点难懂。这里我简单说一下吧:

[转cwit]关于参数传递的方法:

1.在内存中提取:① 采用function的varargin和varargout传送,② 存在handle的ApplicationData中,③保存在handles里面。当然还有其他方法; 2.存在硬盘上,采用save和load;

3.用全局变量,最次的办法,有时却是最好的办法;

我想,对于这里处理的GUI问题,一般不会用到save和load命令(要 从mat文件读取数据初始化或者把数据存储到mat文件中例外),“function的varargin和varargout传送”的方法也不较少使用(因为对于控件的回调函数,matlab规定了输入参数为“hObject, eventdata, handles, varargin”,且一般没有返回值,所以不同于自定义的函数),所以剩下的方法就只有三种了: 1.存在handle的ApplicationData中――利用setappdata函数将数据保存在对象的“ApplicationData”属性中,利 用getappdata函数从对象的“ApplicationData”属性中提取数据,如果没有定义,就为空。例如,假设figure的tag属性是 figure1,则setappdata(handles.figure1,’A’,A)就可以把变量A存放到figure1的 “ApplicationData”属性中,名字为A,而B = getappdata(handles.figure1,’A’)就可以把figure1的“ApplicationData”属性中名字为A的变量赋给 B。setappdata和getappdata操作的对象,最好为figure_handle,便于管理和扩展。Matlab的高级编程和对象控制,将 大量使用这两个函数[转自cwit];

2.保存在handles里面――首先,这是访问控件的常用方法,注意到Tag是唯一标识控件的属性,也就说,如果一个控件的Tag属性是a,那么,在fig 对应的m文件中,只要含有“handles”作为其输入参数的函数中,就可以使用handles.a对该控件进行访问。既然句柄(相当于其他语言中的指 针)已经拿到手了,就任由“宰割”了(例如设置属性、存取数据等就比较容易了);其次,可以利用这种方法把自定义的变量保存在handles里面进行存取,这在matlab帮助的Creating a GUI with GUIDE一节中有具体介绍,不多说;

3.用全局变量的方法――这是我进行参数传递的常用方法,使用方法是:在两个函数体(当然可以是多个了,这里是主函数和子函数的意思)中使用前加入语句 “global A”,其中A是多个函数需要传递的变量名,多个变量用空格格开,句末不需要加分号。这种方法由于存放在硬盘上,存取速度会减慢,但是如果变量个数不多、或 者对该变量引用的函数不多,可以考虑用此办法(我尚未能领会cwit兄所说“最次的办法,有时却是最好的办法”之含义)。

至于其他有关GUI命令、控件属性和图形属性可以参考matlab的帮助,或者参考“GUI命令大全”、《精通GUI图形界面编程》(这两个本论坛有)、“Matlab图形图像属性”、“GUI.rtf”(这两个参见附件,后者下载后手动修改一下后缀名)。实际上,用得比较多的控件属性不外乎以下几种(高手例外):

Visible属性,例如axes、edit、button等,格式:set(handles.***, ‘Visible’, ‘on’);或者set(handles.***, ‘Visible’, ‘off’);

String属性,例如edit、text等,格式:str=get(handles.***, ‘String’)或set(handles.***,’String’,str);Enable属性,例如edit、button、text等,格式:set(handles.***, ‘Enable’, ‘on’);或者set(handles.***, ‘Enable’, ‘off’);

Value属性,例如radio button、check box等,格式:a=get(handles.***, ‘Value’)或set(handles.***,’Value’,1);或set(handles.***,’Value’,0);

留意一下响应函数的注释部分,有时候会得到提示的。例如,我的 matlab 2007a 中,在设计界面上增加了 listbox 控件后,m 文件的对应回调函数处显示如下:

%---Executes on selection change in listbox1.function listbox1_Callback(hObject, eventdata, handles)% hObject handle to listbox1(see GCBO)% eventdata reserved100*k/N)<= 1e-003 waitbar(k/N);i = i + step;end 其中i是控制进度条在何处刷新,k是程序的循环变量,N是程序循环的总次数。

使用 uicontrol 方式实现进度条的示例: 复制内容到剪贴板 代码: figure;e1 = uicontrol(gcf,'style','edit','BackgroundColor','w',...'unit','normalized','position',[0.35,0.6,0.02,0.25]);e2 = uicontrol(gcf,'style','edit','BackgroundColor','r',...'unit','normalized','position',[0.3525,0.6,0.015,0.01]);drawnow;n = 1000;ii = 1;for i = 1:0.01:n if(ii-100*i/n)<= 1e-003 set(e2,'position',[0.3525,0.6,0.015,0.01+0.24*i/n]);drawnow;ii = ii + 1;end end 【附录】转自cwit兄:

m文件与fig文件创建figure的十大差异——用代码写figure,并不是麻烦。如果你习惯了,或者熟悉了,会发现用代码实现guide编程,比GUI方便很多,功能也很强大。用m文件实现guide编程,相比GUI编程有几大差异: 1.代码可复用,节省成本;

2.GUI不能灵活创建uimenu,并且不能编辑其所有属性; 3.GUI还没有实现创建uitoolbox; 4.GUI不能创建所有axes的子对象;

5.写界面也有一些算法,在GUI中无法实现。而用m文件就可以实现在不同窗口尺寸下给对象以合适的位置; 6.m文件可以生成非常复杂的界面;

7.采用GUI编程,代码编译后依赖于*.fig文件; 8.m文件可以实现组件;

9.m文件创建的对象,可以方便的在handle中存取数据; 10.m文件可以将创建对象代码与动作执行代码很好的结合起来。

【注】关于两种方式的运行:

对于fig文件方式:fig文件记录的是控件的布局和属性等资源信息,m文件记录的是控件的响应消息(这是个人理解,更准确的介绍请参阅有关GUI的书籍,我懒得去查了,呵呵),两者缺一不可。所以,不能通过打开fig文件(如菜单中的Open命令)来运行该GUI,这种方式的运行方法有两种:打开该GUI对应的m文件,然后像普通m文件那样运行;打开该GUI的设计界面(菜单操作:FileNewGUIOpen Existing GUI,打开 fig 文件),然后点击设计界面工具栏上的那个像箭头一样的按钮

对于m文件方式:像普通m文件那样运行就可以了

先建立两个GUI,一个名为guidata1.fig guidata2.fig,它们的tag属性也分别为guidata1,guidata2。然后在guidata1.m中的opening function中加入下列语句:

setappdata(handles.guidata1,'Sai',1);

在guidata2.m中的opening function 中写入下列语句:

setappdata(handles.guidata2,'Sai',2);

下面我们分别在guidata1.fig guidata2.fig中放一个按钮和静态文本。接下来,在guidata1.m的按钮中加入下列程序:

guidata21=findobj('Tag','guidata2');if isempty(guidata21),errordlg('Not Open guidata2.fig','Error');

guidata22=guidata2();

Sai=getappdata(guidata22.guidata2,'Sai');

set(handles.text1,'String',num2str(Sai));else

guidata22=guihandles(guidata2);

Sai=getappdata(guidata22.guidata2,'Sai');

set(handles.text1,'String',num2str(Sai));end

在guidata2.m中的按钮中加入下列程序:

guidata12=findobj('Tag','guidata1');%查看guidata1.fig是否打开 if isempty(guidata12), %如果没有打开

guidata11=guidata1();%打开guidata1.fig,并且把句柄给guidata11

guidata11=guihandles(guidata11);%把guidata11转为可用的gui句柄

Sai=getappdata(guidata11.guidata1,'Sai');%读取句柄guidata11中的名为Sai的变量值,可以和其%%%%%%%%%opening function 中的对比setappdata(handles.guidata1,'Sai',1)

set(handles.text1,'String',num2str(Sai));else

guidata11=guihandles(guidata1);

Sai=getappdata(guidata11.guidata1,'Sai');

set(handles.text1,'String',num2str(Sai));end

然后随便打开某个fig文件,比如打开guidata1.fig,然后点其中的按钮,可以看到下面的静态文本上显示2,那么这个自然是从guidata2.fig中读出来的。而且会自动打开guidata2.fig.这里其实是用findobj首先看是否已经打开guidata1,如果没有打开,则打开,并将句柄转化为gui句柄。我在opening function 中是将名为Sai,值为1的变量存在了figure中,其实也可以存在其他控件中,比如在按钮上加一个应用程序数据其名为Sai,值为1,那么可以这么写 setappdata(handles.pushbutton1,'Sai',1),然后随时我们都可以通过getappdata setappdata来获取或设置其值。

而这里我推荐用这两个命令,如果你用handles来共享数据的话,一是他可能会被程序的其他控件改变,二是它容易和引用控件时想混淆。

第三篇:关于GUI的一点心得体会

[Fig文件方式,即使用菜单File->New->GUI来设计界面] 首先值得注意的是,在低版本matlab上 制作的含GUI的m文件一般不能在高版本的matlab上面运行,但是从7.0版开始改进了一点,我试过 6.5版的含GUI的m文件可以在 7.0版上运行,但如果在7.0版上面修改过.fig文件,那么就不能回到6.5版上运行了(显示一堆错误,我没看懂,不知道能否通过修改使之重新可在 6.5版上运行,呵呵),而在7.0版上制作的含GUI的m文件就完全不能放到6.5版上运行了(也是同样的错误)。这可能是因为matlab各版本在 GUI上改动较大,所以都不支持向下兼容。也许兼容性差是使用GUI编写程序的最大麻烦。

其次,说说使用GUI的好处。不知道是否承袭了VC or BCB的习惯,我比较喜欢编写完程序后按快捷键运行(此时会自动保存m文件),但是,对于程序有输入参数的 时候,如果不采用GUI方式,这显然是行不通的――当然了,可以在command window按“向上”键然后重新改写你想要的参数。对于一些较大型的程序,正因为我比较偏向于按F5运行程序,所以我会选择使用GUI方式。不过GUI 方式的好处就远不止于此了,它可以把几个功能相关的模块集中起来,使得不需要重新关闭、运行就能得到不同的结果,便于比较;可以减少figure满天飞的现象,这在matlab中尤为明显;便于交互式地观看不同的数据,例如在我处理的fMRI问题中,希望观看每个三维点对应的时间序列,这时候需要提供交互式的选择„„不过,尽管GUI有很多好处,但是其缺点也是有的,除了上面提到的兼容性(移植性)以外,要管理、维护一个GUI界面也是比较麻烦的,相信有其他语言的界面设计经验的朋友也知道这点。

再 者,对GUI问题,说说我的一点经验吧。其实,matlab已经在这方面改进了不少,从控件的增加和教程的学习都可以看出来。例如6.5版本是没有 Panel和Button Group这两个控件的,在2006a版本中就新增了这两个控件(这个好像7.0版就有了,不确定);教程方面,也使用了最为直观的视频教学方式,建议新手看看Creating a GUI with GUIDE 和Creating Graphical User Interfaces两节。所以,操作上的细节我就不多讲了,自己摸索一下就ok了。至于编程时最为关键的参数传递问题,可以参考本论坛或者仿真论坛上面的“函数结构与参数传递”一文,作者整理得较完整,不过有点难懂。这里我简单说一下吧:

[转cwit]关于参数传递的方法:

1.在内存中提取:① 采用function的varargin和varargout传送,② 存在handle的ApplicationData中,③保存在handles里面。当然还有其他方法; 2.存在硬盘上,采用save和load;

3.用全局变量,最次的办法,有时却是最好的办法;

我想,对于这里处理的GUI问题,一般不会用到save和load命令(要 从mat文件读取数据初始化或者把数据存储到mat文件中例外),“function的varargin和varargout传送”的方法也不较少使用(因为对于控件的回调函数,matlab规定了输入参数为“hObject, eventdata, handles, varargin”,且一般没有返回值,所以不同于自定义的函数),所以剩下的方法就只有三种了: 1.存在handle的ApplicationData中――利用setappdata函数将数据保存在对象的“ApplicationData”属性中,利 用getappdata函数从对象的“ApplicationData”属性中提取数据,如果没有定义,就为空。例如,假设figure的tag属性是 figure1,则setappdata(handles.figure1,’A’,A)就可以把变量A存放到figure1的 “ApplicationData”属性中,名字为A,而B = getappdata(handles.figure1,’A’)就可以把figure1的“ApplicationData”属性中名字为A的变量赋给 B。setappdata和getappdata操作的对象,最好为figure_handle,便于管理和扩展。Matlab的高级编程和对象控制,将 大量使用这两个函数[转自cwit];

2.保存在handles里面――首先,这是访问控件的常用方法,注意到Tag是唯一标识控件的属性,也就说,如果一个控件的Tag属性是a,那么,在fig 对应的m文件中,只要含有“handles”作为其输入参数的函数中,就可以使用handles.a对该控件进行访问。既然句柄(相当于其他语言中的指 针)已经拿到手了,就任由“宰割”了(例如设置属性、存取数据等就比较容易了);其次,可以利用这种方法把自定义的变量保存在handles里面进行存取,这在matlab帮助的Creating a GUI with GUIDE一节中有具体介绍,不多说;

3.用全局变量的方法――这是我进行参数传递的常用方法,使用方法是:在两个函数体(当然可以是多个了,这里是主函数和子函数的意思)中使用前加入语句 “global A”,其中A是多个函数需要传递的变量名,多个变量用空格格开,句末不需要加分号。这种方法由于存放在硬盘上,存取速度会减慢,但是如果变量个数不多、或 者对该变量引用的函数不多,可以考虑用此办法(我尚未能领会cwit兄所说“最次的办法,有时却是最好的办法”之含义)。

至于其他有关GUI命令、控件属性和图形属性可以参考matlab的帮助,或者参考“GUI命令大全”、《精通GUI图形界面编程》(这两个本论坛有)、“Matlab图形图像属性”、“GUI.rtf”(这两个参见附件,后者下载后手动修改一下后缀名)。实际上,用得比较多的控件属性不外乎以下几种(高手例外):

Visible属性,例如axes、edit、button等,格式:set(handles.***, ‘Visible’, ‘on’);或者set(handles.***, ‘Visible’, ‘off’);

String属性,例如edit、text等,格式:str=get(handles.***, ‘String’)或set(handles.***,’String’,str);Enable属性,例如edit、button、text等,格式:set(handles.***, ‘Enable’, ‘on’);或者set(handles.***, ‘Enable’, ‘off’);

Value属性,例如radio button、check box等,格式:a=get(handles.***, ‘Value’)或set(handles.***,’Value’,1);或set(handles.***,’Value’,0);

留意一下响应函数的注释部分,有时候会得到提示的。例如,我的 matlab 2007a 中,在设计界面上增加了 listbox 控件后,m 文件的对应回调函数处显示如下:

%---Executes on selection change in listbox1.function listbox1_Callback(hObject, eventdata, handles)% hObject handle to listbox1(see GCBO)% eventdata reserved100*k/N)<= 1e-003 waitbar(k/N);i = i + step;end 其中i是控制进度条在何处刷新,k是程序的循环变量,N是程序循环的总次数。

使用 uicontrol 方式实现进度条的示例: 复制内容到剪贴板 代码: figure;e1 = uicontrol(gcf,'style','edit','BackgroundColor','w',...'unit','normalized','position',[0.35,0.6,0.02,0.25]);e2 = uicontrol(gcf,'style','edit','BackgroundColor','r',...'unit','normalized','position',[0.3525,0.6,0.015,0.01]);drawnow;n = 1000;ii = 1;for i = 1:0.01:n if(ii-100*i/n)<= 1e-003 set(e2,'position',[0.3525,0.6,0.015,0.01+0.24*i/n]);drawnow;ii = ii + 1;end end 【附录】转自cwit兄:

m文件与fig文件创建figure的十大差异——用代码写figure,并不是麻烦。如果你习惯了,或者熟悉了,会发现用代码实现guide编程,比GUI方便很多,功能也很强大。用m文件实现guide编程,相比GUI编程有几大差异: 1.代码可复用,节省成本;

2.GUI不能灵活创建uimenu,并且不能编辑其所有属性; 3.GUI还没有实现创建uitoolbox; 4.GUI不能创建所有axes的子对象;

5.写界面也有一些算法,在GUI中无法实现。而用m文件就可以实现在不同窗口尺寸下给对象以合适的位置; 6.m文件可以生成非常复杂的界面;

7.采用GUI编程,代码编译后依赖于*.fig文件; 8.m文件可以实现组件;

9.m文件创建的对象,可以方便的在handle中存取数据; 10.m文件可以将创建对象代码与动作执行代码很好的结合起来。

【注】关于两种方式的运行:

对于fig文件方式:fig文件记录的是控件的布局和属性等资源信息,m文件记录的是控件的响应消息(这是个人理解,更准确的介绍请参阅有关GUI的书籍,我懒得去查了,呵呵),两者缺一不可。所以,不能通过打开fig文件(如菜单中的Open命令)来运行该GUI,这种方式的运行方法有两种:打开该GUI对应的m文件,然后像普通m文件那样运行;打开该GUI的设计界面(菜单操作:FileNewGUIOpen Existing GUI,打开 fig 文件),然后点击设计界面工具栏上的那个像箭头一样的按钮

对于m文件方式:像普通m文件那样运行就可以了

先建立两个GUI,一个名为guidata1.fig guidata2.fig,它们的tag属性也分别为guidata1,guidata2。然后在guidata1.m中的opening function中加入下列语句:

setappdata(handles.guidata1,'Sai',1);

在guidata2.m中的opening function 中写入下列语句:

setappdata(handles.guidata2,'Sai',2);

下面我们分别在guidata1.fig guidata2.fig中放一个按钮和静态文本。接下来,在guidata1.m的按钮中加入下列程序:

guidata21=findobj('Tag','guidata2');if isempty(guidata21),errordlg('Not Open guidata2.fig','Error');

guidata22=guidata2();

Sai=getappdata(guidata22.guidata2,'Sai');

set(handles.text1,'String',num2str(Sai));else

guidata22=guihandles(guidata2);

Sai=getappdata(guidata22.guidata2,'Sai');

set(handles.text1,'String',num2str(Sai));end

在guidata2.m中的按钮中加入下列程序:

guidata12=findobj('Tag','guidata1');%查看guidata1.fig是否打开 if isempty(guidata12), %如果没有打开

guidata11=guidata1();%打开guidata1.fig,并且把句柄给guidata11

guidata11=guihandles(guidata11);%把guidata11转为可用的gui句柄

Sai=getappdata(guidata11.guidata1,'Sai');%读取句柄guidata11中的名为Sai的变量值,可以和其%%%%%%%%%opening function 中的对比setappdata(handles.guidata1,'Sai',1)

set(handles.text1,'String',num2str(Sai));else

guidata11=guihandles(guidata1);

Sai=getappdata(guidata11.guidata1,'Sai');

set(handles.text1,'String',num2str(Sai));end

然后随便打开某个fig文件,比如打开guidata1.fig,然后点其中的按钮,可以看到下面的静态文本上显示2,那么这个自然是从guidata2.fig中读出来的。而且会自动打开guidata2.fig.这里其实是用findobj首先看是否已经打开guidata1,如果没有打开,则打开,并将句柄转化为gui句柄。我在opening function 中是将名为Sai,值为1的变量存在了figure中,其实也可以存在其他控件中,比如在按钮上加一个应用程序数据其名为Sai,值为1,那么可以这么写 setappdata(handles.pushbutton1,'Sai',1),然后随时我们都可以通过getappdata setappdata来获取或设置其值。

而这里我推荐用这两个命令,如果你用handles来共享数据的话,一是他可能会被程序的其他控件改变,二是它容易和引用控件时想混淆。

第四篇:gui谷子解读

一、何谓纵横术

《史记六十七卷·仲尼弟子列传》

——存鲁、乱齐、破吴、疆晋而霸越,史称“一石五鸟” ① 游说的前提──量权 ② 游说的出发点──揣情 ③ 游说的顺利发展──摩意 ④ 游说成功的关键──权谋

●纵横术就是把“知己知彼,胜乃不殆”的策略具体运用到人类的思维心理层面上,内设计谋,外陈言辞,动之以形势,诱之以利害,所展开的思维心理战术。●纵横术不是呈一时口舌之辩、转丸其辞的诡辩术,而是融道(原则)、法(方法)、术(技巧)为一体的经典的人类行为理论。

二、理解和运用纵横术的原则 ●道、法、术相结合的原则

——原理、原则;法则、方法;技巧 ●言、情、智相结合的原则 ⊙“泣下沾襟”

——言贵动其情,情贵动其心 ⊙“诱师出屋”

——智贵善其谋。智泽于内,言溢于外 ●《战国策》与《鬼谷子》对照研读

三、纵横术选讲 1.捭阖术

捭阖术是以事物和人物的阴阳类别为法则而展开的言谈语默之术。其目标是料对方之实情,最大限度地获取对方的信诚。所谓“捭之者,料其情也;阖之者,结其诚也”。

“捭”的字面意思是开、言,引申为使之开口说话,或者说服对方接纳己方观点。故曰:“捭者,或捭而出之,或捭而内之。”

“阖”的字面意思是关、默,引申为默认或者拒绝。故曰:“阖者,或阖而取之,或阖而去之。”

捭为阳,在明处;阖为阴,在暗处。调动对方说话之后,对对方所言的情之真伪要暗中有所取舍;让对方确信什么,放弃或忽略什么,也在暗中操作。总论的性质

捭阖篇说:“口者,心之门户也。心者,神之主也。志意、喜欲、思虑、智谋,此皆由门户出入。故关之以捭阖,制之以出入。” A:方法

1.目标:“料其情,结其诚”

⊙料其情:开其金口,观其心志 ⊙结其诚:取同去异,结其信诚

○孔子说:“人心险于山川,难于知天。”(《庄子·列御寇》)怎样打开言谈的局面? 怎样消除分歧,结其信诚? 2.一般方法

①明类:纵向的类与横向的类 ●纵向的类

⊙信任感与认同感等 ⊙制造角色与恶性循环 ●横向的类

⊙好奇心、同情心、恐惧感等 ⊙怎样研究横向的类 ? ② 需要理论

⊙阳类:长生、安乐、富贵、尊荣、显名、爱好、财利、得意、喜欲,以这一类有利的事物来进行游说称为“阳”、称为“始”

⊙阴类:死亡、忧患、贫贱、苦辱、弃损、亡利、失意、有害、刑戮、诛罚,以这一类不利的事物来进行游说称为“阴”、称为“终”

——马斯洛:生理、安全、爱与归属、尊重、认知、美感与自我实现。3.具体方法

①“言善以始其事”;“言恶以终为谋”

●动其行:强调有利的方面诱使对方行动 ●止其谋:强调不利的方面阻止对方行动 ②“与阳言者依崇高”;“与阴言者依卑小” ●“谋之于阳”:以崇高为基调,以高求大 ●“谋之于阴”:以卑小为基调,以下求小

③ “微排其所言而捭反之,以求其实,贵得其指” ——“排抑捭反”与“混说损益”(《内揵篇》)第一步:开而示之同,隐而藏之异。——“阳动而行,阴止而藏” 第二步:借“取同”而“去异”。——“阳动而出,阴隐而入” 第三步:求所言利害之信。——“以阳求阴,苞以德也” ——反面(不可行性)论证 B.技巧

●求所言利害之信的说服技巧 ⊙语言:以第三者立场陈言

⊙心理:聪明的卖马人(《燕策二》)⊙逻辑:两面论证的可能性—论辩 ——晋元帝与明帝司马绍

——“黄金准则”与邓析的 “两可之说”; “濠梁之辩”与“秦赵之约” 死局──僵局──和局 C:原则──道术与术道

●“捭阖者,以变动阴阳,四时开闭,以化万物”;“捭阖之道,以阴阳试之”;“益损、去就、倍反,皆以阴阳御其事”。(《捭阖》)

●“欲捭之,贵周;欲阖之,贵密。周密之贵微,而与道相追。”(《捭阖》)2.反应术 捭阖术讲的是如何以有声的语言探测对方的实情、结取对方的信诚,而反应术则进一步透过有声语言的表层,展开“以无形求有声”的思维心理战术,其目标是“得其情诈”。

“反”就是反观:反观历史、反观对方;“应”亦作“覆”,有“覆验”和“应验”两层意思。所谓“反以知彼,覆以知己”,“反以观往,覆以验来”。A:方法

1.目标:“听真伪,知同异,得其情诈也。” ——《吕氏春秋·淫辞》说:“非辞无以相期” 又说:“从辞则乱”。——《易·系辞》说:“将叛者,其辞惭;中心疑者,其辞歧;吉人之辞寡;躁人之辞多;诬善之人,其辞游;失其守者,其辞屈。” 2.察言观色:以其见者而知其隐者

——东郭牙善辨君子“三色”:钟鼓之色、衰绖之色、兵革之色。(《管子·小问》)3.象比之法:以其隐者而知其见者

——“象其事,比其辞” ; “以无形求有声” ——情、理、类隐而无形 ——“同声相呼,实理同归”

根据事物的常理、常规和人物的常态、常情来推断情之真伪。对于违反常理、常规和常态、常情的现象,要善于冷静观察,其中大多有诈。

——明智的南文子(《宋、卫策》)

——反常的郑袖(《楚策四》)B:技巧

1.钓情术:“钓语合事,得人实也。其犹张置网而取兽也。” ⊙饵钓:物饵与人饵

——齐王后死,《齐策三》 ——申不害答韩王,《韩策一》 ——唐·赵蕤《长短经·钓情篇》:物钓、言钓、事钓、志钓、视钓、贤钓、色钓7种。

⊙善钓:善钓者不用饵,用网。这个网就是以道为纲的反观术。

2.反观术:“反以观往,覆以验今。反以知古,覆以知今。反以知彼,覆以知己。” ⊙“变象比,必有反辞。”

⊙“善反听者,乃变鬼神以得其情。” ——反听、反观、反说与“知己知彼” 反听:庄王伐陈,《吕氏春秋·似顺》 反观:刘邦封雍齿,《经世奇谋·纾祸》 反说:陈轸说昭阳,《齐策一》

——带指针的跪毯 C:原则──道术与术道

●“古之大化者,乃与无形俱生。”“事有反而得覆者,圣人之意也。”(《反应篇》)●“己不先定,牧人不正;事用不巧,是谓忘情失道。”(《反应篇》)——齐桓公的悲惨结局,《智囊·知微》

3.内揵术

捭阖术讲的是如何“料其情,结其诚”,反应术讲的是如何“察言见情”、“得其情诈”。内揵术讲的则是如何建立和不断巩固游说者与游说对象之间的亲密关系。

“内”,入也、纳也。引申为以言辞入结于君;“揵”,关门之木,关合、紧闭。引申为以谋略内结于君。

A:方法

1.目标:“出无间,入无朕,独往独来,莫之能止。” ⊙ “伙伴关系”与“情人关系” “君臣上下之事,有远而亲,近而疏。……日进前而不御,遥闻声而相思。”(《内揵》)

2.为什么追求这一目标? ○感情亲疏对理智判断的影响 ——“信而后谏”(《论语·子张》)

——“周泽既渥,计而不疑,引争而不罪。”(《韩非子·说难》)○兜售智谋,高风险性的职业。3.怎样追求这一目标?

——四种结交方式:“结以道德、结以党友、结以财货、结以采色” ○道德:道术(智)与仁德(心)。内结为帝王之师,外应以良臣之名。

○党友:同党(志、意)与朋友(情、趣)。内结为君王之友,外应以同党之名。○财货:金玉珠帛等(私欲)○采色:土地和美女(私欲)B:技巧

1.进说之阴柔术

——“欲说者务隐度,计事者务循顺。阴虑可否,明言得失,以御其志。” ⊙用其意、御其志

⊙阴隐与柔顺(不触逆鳞)○“十诫与九说”(《韩非子·说难》)2.计事之因化术

——“方来应时,以合其谋。详思来揵,往应时当也。夫内有不合者,不可施行也。乃揣切时宜,从便所为,以求其变。以变求内者,若管取揵。” ⊙往应时当:“时”与“位”

⊙以变求内:“志同、气顺、心合 ”。C:原则──道术与术道

●“不见其类而说之者,见逆;不得其情而说之者,见非。” ●“揣切时宜,从便所为,以求其变。” ●“环转因化,莫知所为,退为大仪。” ——智伯与郄疵、智果(《赵策一》)4.揣术与摩术

揣术与摩术进一步将揣情的空间范围拉大,把揣情与量权和摩意结合起来考虑。“揣”有量权和揣情两种含义。

“摩”即“触摩”之意,谓以事谋去顺合所说服的对象,并诱使他作出回应或者付诸行动。所以说:“摩者,揣之术也。” A.方法

1.目标:“知强弱轻重之称、隐匿变化之动静”

“古之善用天下者,必量天下之权,而揣诸侯之情。量权不审,不知强弱轻重之称;揣情不审,不知隐匿变化之动静。” “计国事者,则当审权量;说人主,则当审揣情。谋虑情欲,必出于此。……故虽有先王之道,圣智之谋,非揣情隐匿,无可索之。此谋之大本,而说之法也。”(《揣篇》)

2.量权、揣情、摩意:谋事的战略战术 ——诸葛亮的“隆中对”,刘备“空手套白狼”,占据荆州和益州,《资治通鉴65卷》 ——郭嘉的“十胜论”,曹操以弱胜强,打败袁绍,《资治通鉴62卷》 ——耳听八方的日本商人 ——8年秘书与龙行天下 B:技巧 1.极情术

⊙“以其甚喜之时,往而极其欲也。”“以其甚惧之时,往而极其恶也。” ——楚成王改立太子,《智囊·狡黠》

⊙“感动而不知其变者,乃且错其人勿与语,而更问其所亲,知其所安。” ——韩非子讲的《韩非子·八奸》

2.摩意术:“微摩之以其所欲,测而探之……是谓塞窖、匿端、隐貌、逃情,而人不知,故成其事而无患。”

——“古之善摩者,如操钩而临深渊,饵而投之,必得鱼焉。”(《摩篇》)⊙“平者,静也”:以平正的方式使之静,不轻举妄动。⊙“正者,直也”:以正当的方式使之直道而行。⊙“喜者,悦也”:以对方所喜欲的事情使他欢悦。⊙“怒者,动也”:以对方所厌恶的事情使他冲动。⊙“名者,发也”:通过显扬对方的名声来诱动对方。⊙“行者,成也”:协助对方行动,使之获得成功。⊙“廉者,洁也”:以贞洁的行为诱动对方

⊙“信者,期也”:以诚信的方式使对方所期待的事情兑现。⊙“利者,求也”:用利益之事诱使对方去追求 ⊙“卑者,谄也”:以低下的言辞或行为打动对方 ——幸运的奥迪:行者,成也;信者,期也。

——《文汇读书周报》,遭遇荷兰“红宝书”:卑者,谄也 C:原则──揣、摩之道

●“揣情饰言,成文章而后论之。” ●“摩之以其类”,“摩之以其欲”。●“道、数与时相偶者也。”

——郑武公伐胡,《韩非子·说难》

——江乙善谋,安陵君(楚成王的宠臣安繵)知时,《楚策一》

5.抵巇术

抵为抵塞,巇为罅隙、裂缝。抵巇就是把有缺漏的地方堵塞住。抵巇术讲的是如何弥缝事情的罅隙,使事情免于溃败的技术。

“物有自然,事有离合。”“自天地之合离终始,必有巇隙,不可不察也。察之以捭阖,能用此道,圣人也。”

——墙崩因隙,器坏因衅。因隙衅而击实之,则墙器不败。若不可救,则因而除之,另有所营置。人事也是如此。A:方法

1.目标:能因能循,为天地守神。2.“因”:危险的兆头刚萌生便觉察之

“事之危也,圣人知之,独保其用,因化说事,通达计谋,以识细微。经起秋毫之末,挥之于太山之本。”

——缝隙乃祸之端始 3.“循”:因衅隙而救之或除之

“圣人者,天地之使也。世无可抵,则深隐而待时;时有可抵,则为之谋。”

——缝隙乃谋生之地 4.何谓萌芽巇罅?

“天下纷错,上无明主,公侯无道德,则小人谗贼,贤人不用,圣人窜匿,贪利诈伪者作,君臣相惑,土崩瓦解而相伐射,父子离散,乖乱反目,是谓萌芽巇罅。圣人见萌芽巇罅,则抵之以法。” 5.抵巇五法

⊙抵而塞:隙漏如果由内部引起,则抵而塞(塞住)⊙抵而却:隙漏如果由外部引起,则抵而却(挡退)⊙抵而息:隙漏如果由下面引起,则抵而息(平息)⊙抵而匿:隙漏如果由上面引起,则抵而匿(藏匿)⊙抵而得:隙漏如果无法救治,则抵而得(取而代之)

——这五者可归为两类:抵而塞之与抵而得之。事情还有挽救的余地,则抵而塞之;若不可挽救,则抵而得之。B:技巧

⊙如何因应事物发展的变隙而加以防治 ⊙如何因应事物发展的变隙而使之溃败 ——如何设置计谋的技巧,参见谋术 C:原则──道术与术道

●“物有自然,事有合离。有近而不可见,远而可知。近而不可见者,不察其辞也;远而可知者,反往以验来也。”

●“兆萌牙孽之谋,皆由抵巇,抵巇隙为道术用。”

6.飞箝术

“飞”就是飞扬褒奖;“箝”就是钳制约束。

飞箝术言取人之道,先作声誉以飞扬之,彼必露情竭志而无隐,然后因其所好,牵制约束,使之不得脱离的役使人才之术。A:方法

1.目标: 空往而实来,缀而不失 ——一文钱骗术,《智囊·狡黠》;办学者 2.征召人才:“度权量能,征远来近。” ——燕昭王招贤纳士

3.役使人才:“量智能,权材力” ;“审其意,知其所好恶” ——庞统当总参谋长;晋文公提升箕郑 B.役使人才之术

①先征之而后重累。使贤才:征来后累以重任,如诸葛亮,鞠躬尽瘁,死而后已 ②先重累而后毁之。使干才:如诸葛亮用魏延 ③量能立势以钩之

讲效率:对人迫之以势,如驾重车下山的辕马 ④伺候见间而箝之

讲手段:利用人的缺陷箝制约束,使之不得脱也。如曹操见“间”而箝徐庶;司马熹使赵造“间”而箝中山王。钱锺书的《围城》。⑤称财货、珠玉、璧帛、采色以事之 养闲人:如孟尝君的“鸡鸣狗盗”之徒 C:原则──道术与术道 ●“察同异,别是非之语。” ——用人有道

●“见内外之辞,知有无之数。” ——知人有数

●“决安危之计,定亲疏之事。” ——役人者,手操的是双刃剑

7.权术与谋术

“权”:古代秤砣叫权,权衡轻重的意思。在这里指的是在游说中,对所使用的语言、谈话的技巧和所说服的对象,要加以谨慎的权衡和选择。

“谋”:谋就是思虑、计谋。《说文》:“虑难曰谋。”虑人难、虑事难、参立难,将这三难解决好了,计谋就会应运而生。

权谋术讲的是如何选择言谈的技巧和如何权衡游说的对象,针对人类行为的弱点和事物发展变化的衅隙,见隙而谋的谋略技术。A:“权”的方法和技巧

1.目标:“繁言而不乱,翱翔而不迷,变易而不危,睹要得理。” 2.五种可选择的言语方式 ●佞言者,谄而干忠 ●谀言者,博而干智 ●平言者,决而干勇 ●戚言者,权而干信 ●静言者,反而干胜

3.五种忌讳和可利用的言语方式 ●病者,感衰气而不神 ●怨者,肠绝而无主 ●忧者,闭塞而不泄 ●怒者,妄动而不治 ●喜者,宣散而无要

——“心安静则神策生,虑深远则计谋成”

4.“见人说法”九种 ①与智者言依于博 ②与博者言依于辩 ③与辩者言依于要 ④与贵者言依于势 ⑤与富者言依于高 ⑥与贫者言依于利 ⑦与贱者言依于谦

⑧与勇者言依于敢 ⑨与过者言依于锐 B:“权”之道

●“言多类,事多变,终日言不失其类。” ●“智贵明,辞贵奇。”

——改姓辅氏的智果与出使齐国的郄疵《赵策一》 ——靖郭君田婴与“海大鱼”,《齐策一》 C:何为计谋

“凡谋有道,必得其所因。”“故因其疑以变之,因其见以然之,因其说以要之,因其势以成之,因其恶以权之,因其患以斥之。摩而恐之,高而动之,微而证之,符而应之,拥而塞之,乱而惑之,是谓计谋。” ——乱而惑之:张巡与安禄山玩草人借箭 D:如何设立计谋

①“度材、量能、揣情,事之司南也。” ——设立计谋的指南

②“变生事,事生谋,谋生计。” ——事物发展的变隙乃谋生之地 ③“参以立焉,以生奇”

——仁、智、勇三才:参立难。“仁人轻货,不可诱以利,可使出费;勇士轻难,不可惧以患,可使居危;智者达于数,明于理,不可欺以不诚,可示以道理,可使立功。” E:计谋之用

①“公不如私,私不如结,结而无隙者也。”(私,隐密;结,同心;谋生于有隙,用于无隙)

②“正不如奇(奇,因事机发),奇流而不止者也。” ③“可知者,可用也;不可知者,谋者所不用也。” F:“谋”之道

●“用于众人之所不能知,用于众人之所不能见。” ●“圣人之道,在隐与匿。” 8.决疑术

决疑术是按着“度以往事,验之来事,参之平素”的法则而进行的决疑断惑之术。其宗旨在于说明有哪些事情值得我们费心力去做决断,并教我们如何去下决断。自古以来,善决疑者致福,不善决疑者有殃。决疑是极难为而又影响深远之事,所谓“决情定疑,万事之机,以正治乱,决成败,难为者”。A:方法与技巧

●“决情定疑,万事之机,以正治乱,决成败,难为者。故先王乃用蓍龟者,以自决也。”

●五种值得决断的事情

⊙“王公大人之事也,危而美名者” ⊙“不用费力而易成者”

⊙“用力犯勤苦,然不得已而为之者” ⊙“去患者” ⊙“从福者”。●五种决断方式 ⊙决之以“阳德” ⊙决之以“阴贼” ⊙决之以“信诚” ⊙决之以“蔽匿” ⊙决之以“平素” B:原则

●“度以往事,验之来事,参之平素” 结束语:

一、纵横术与儒家哲学

——道德问题:德与术;“德养五气,心能得一,乃有其术。”

二、纵横术与道家哲学

“无为而求,安静五脏,和通六腑,精神魂魄固守不动,乃能内视、反听,定志虑之太虚,待神往来。以观天地开辟,知万物所造化,见阴阳之终始,原人事之政理。”

——老子的“无为”与庄子的“无我”

三、纵横术的现代意义

●日常生活:人生的游戏色彩

●职业技术:治国、外交、企业管理… ——读孔子之言,行仪秦之事 ——“内圣外王”与“胜者为王”

第五篇:实验三GUI编程

实验三GUI编程

一、实验目的:

1、了解Java系统图形用户界面的基本工作原理和界面设计的步骤

2、了解图形用户界面的事件响应机制.3、掌握图形用户界面各种常用的基本组件的使用方法及其事件响应.4、掌握图形用户界面各种布局策略的设计与使用.二、实验时间:

三、实验地点:

四、实验内容与步骤:

(1)创建一用户登录界面,接受用户输入的帐号和密码,给三次输入机会。

(2)编写成人身高和体重检查程序。

要求:身高和体重在两个不同的文本框中输入,性别在单选钮中选择。

按确定后显示标准体重和身材比例评价。附:

国际上常用的人的体重计算公式,以及身材比例计算(比较适合东方人)标准体重=(身高cm-100)x0.9(kg)

标准体重(女)=(身高cm-100)x0.9(kg)-2.5(kg)

正常体重:标准体重+-(多少)10%.

超重:大于标准体重10%小于标准体重20%.

轻度肥胖:大于标准体重20%小于标准体重30%.

中度肥胖:大于标准体重30%小于标准体重50%.

重度肥胖:大于标准体重50%以上

(3)实现一个模拟手机的图形用户界面,包括一个显示区和一个键盘区,显示区用来显示数字和信息,键盘区包括0~9,10个数字键和“发送”、“清零”、“关机”三个命令键。当用户按数字键时,相应的数字回显在显示区上;当用户按“清零”键时,显示区的数字清空;当用户按“发送”键时,显示区中出现当前的号码和“拨号中......”的信息;当用户按关机键时“正在关机......”。

第(1)用Application编程,(2)(3)用Applet编程。

五、实验结果分析:

下载关于GUI的一点心得体会word格式文档
下载关于GUI的一点心得体会.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    matlab gui 设计总结[5篇模版]

    1. 7以上版本的matlab,控件pushbutton背景颜色修改以后并没有什么明显效果,只是按钮的边缘显示为所设置的背景颜色。 2 .凡是在属性对话框Property Inspector中可以设置的属性,都......

    java GUI图形化界面编程总结

    GUI(Graphical User Interface)图形化界面编程总结 Java.Awt:Abstract Window ToolKit(抽象窗口工具包) Javax.Swing: 图形化界面基本设置: 设置窗体大小:setSize(长,宽); 设置窗体......

    基于ARMLINUX的嵌入式GUI的设计与开发.

    基于ARM LINUX的嵌入式GUI的设计与开发 摘 要:GUI设计在嵌入式系统设计中占据着举足轻重的地位,MiniGUI为一种适合于嵌入式系统的、功能强大的GUI,本文介绍了基于ARM和Linux的M......

    Java 教案-第12章 GUI初步五篇

    第12章 GUI初步 12.1 介绍(Introduction) 为JavaGUI程序设计应用程序接口(API)是面向对象编程最精彩的内容,图形用户界面(GUI)可以通过键盘或鼠标来响应用户的操作。这章首先介绍......

    MATLAB GUI数据传递总结[小编整理]

    Matlab的GUI参数传递方式总结 其实Matlab提供了很多种直接或间接方法实现多fig中的数据共享,只是大家没有注意 罢了: 1、全局变量 2、作为函数的参数传递 3、利用控件的userda......

    浅析GUI软件的测试用例优化算法的论文(精选多篇)

    随着计算机产业应用范围的进一步拓展,计算机数据应用技术也进一步实现了深入研究,GUI软件技术是现代网络技术应用的重要技术之一,它的应用实现了计算机数据挖掘与数据图像转换......

    MATLAB中GUI在图像处理应用中的设计(包括各种算法)

    用MATLAB 进行图像处理算法的界面设计 1 / 52 目录 1.设计目的„„„„„„„„„„„„„„„„„„„3 2.题目分析„„„„„„„„„„„„„„„„„„„3 3.总体设计„......

    心得体会

    搞好校园文化建设给孩子欢乐幸福童年 2017年8月2日下午有幸聆听了中国教育学会校园文化专业委员会副理事长夏书芳教授关于学校校园文化建设的报告,使我受益匪浅。 校园是现代......