在打开函数中,增加handles中的字段
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 handles.numa=1 handles.numb=1 handles.numc=1 guidata(hObject, handles); % UIWAIT makes test1 wait for user response (see UIRESUME) % uiwait(handles.figure1);
下面完成将结果赋值
> help guihandles
GUIHANDLES Return a structure of handles.
HANDLES = GUIHANDLES(H) returns a structure containing handles of
objects in a figure, using their tags as fieldnames. Objects
are excluded if their tags are empty, or are not legal variable
names. If several objects have the same tag, that field in the
structure contains a vector of handles. Objects with hidden
handles are included in the structure.
H is a handle that identifies the figure - it can be the figure
itself, or any object contained in the figure.
HANDLES = GUIHANDLES returns a structure of handles for the
current figure.
Example:
Suppose an application creates a figure with handle F, containing
a slider and an editable text uicontrol whose tags are 'valueSlider'
and 'valueEdit' respectively. The following excerpts from the
application's M-file illustrate the use of GUIHANDLES in callbacks:
... excerpt from the GUI setup code ...
f = figure;
uicontrol('Style','slider','Tag','valueSlider', ...);
uicontrol('Style','edit','Tag','valueEdit',...);
... excerpt from the slider's callback ...
handles = guihandles(gcbo); % generate handles struct
set(handles.valueEdit, 'string',...
num2str(get(handles.valueSlider, 'value')));
... excerpt from the edit's callback ...
handles = guihandles(gcbo);
val = str2double(get(handles.valueEdit,'String'));
if isnumeric(val) & length(val)==1 & ...
val >= get(handles.valueSlider, 'Min') & ...
val <= get(handles.valueSlider, 'Max')
% update the slider's value if the edit's value is OK:
set(handles.valueSlider, 'Value', val);
else
% flush the bad string out of the edit; replace with slider's
% current value:
set(handles.valueEdit, 'String',...
num2str(get(handles.valueSlider, 'Value')));
end
Note that in this example, the structure of handles is created
each time a callback executes. See the GUIDATA help for an
example in which the structure is created only once, and cached
for subsequent use.
=================
matlab的一元高次方程数值解
计算结果的程序为:
function btn_draw_Callback(hObject, eventdata, handles) % hObject handle to btn_draw (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %求解一元二次方程 myres=roots([handles.numa,handles.numb,handles.numc]); set(handles.result,'string',mat2str(myres)) ;
完整程序为
function varargout = test1(varargin) % TEST1 M-file 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 04-Oct-2012 17:21:13 % 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 handles.numa=1 handles.numb=1 handles.numc=1 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 btn_draw. function btn_draw_Callback(hObject, eventdata, handles) % hObject handle to btn_draw (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %求解一元二次方程 myres=roots([handles.numa,handles.numb,handles.numc]); set(handles.result,'string',mat2str(myres)) ; function a_num_Callback(hObject, eventdata, handles) % hObject handle to a_num (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 a_num as text % str2double(get(hObject,'String')) returns contents of a_num as a double numa=str2double(get(hObject,'string')); if isnan(numa) errordlg('请输入数字','输入错误','modal'); end handles.numa=numa; guidata(hObject, handles); % --- Executes during object creation, after setting all properties. function a_num_CreateFcn(hObject, eventdata, handles) % hObject handle to a_num (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function b_num_Callback(hObject, eventdata, handles) % hObject handle to b_num (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 b_num as text % str2double(get(hObject,'String')) returns contents of b_num as a double numb=str2double(get(hObject,'string')); if isnan(numb) errordlg('请输入数字','输入错误','modal'); end handles.numb=numb; guidata(hObject, handles); % --- Executes during object creation, after setting all properties. function b_num_CreateFcn(hObject, eventdata, handles) % hObject handle to b_num (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function c_num_Callback(hObject, eventdata, handles) % hObject handle to c_num (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 c_num as text % str2double(get(hObject,'String')) returns contents of c_num as a double numc=str2double(get(hObject,'string')); if isnan(numc) errordlg('请输入数字','输入错误','modal'); end handles.numc=numc; guidata(hObject, handles); % --- Executes during object creation, after setting all properties. function c_num_CreateFcn(hObject, eventdata, handles) % hObject handle to c_num (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
用到的主要知识为:
1、get,set获取和设置属性
2、GUI上的控件,都在handles结构中,比如如果有个edit1的文本编辑框,则在M程序中表示为handles.edit1
3、使用guidata来更新GUI的共享数据,可用于控件之间交换数据,此外要加进handles的结构要在打开函数中增加
4、errordlg显示错误提示框
5、关于gco
>> help gco
GCO Get handle to current object.
OBJECT = GCO returns the current object in the current figure.
OBJECT = GCO(FIG) returns the current object in the figure FIG.
The current object is the last object clicked on, excluding
uimenus. If the click was not over a figure child, the
figure itself will be the current object.
The handle of the current object is stored in the figure
property CurrentObject, and can be accessed directly using GET
and SET.
Use GCO in a callback to obtain the handle of the object that
was clicked on. MATLAB updates the current object before
executing each callback, so the current object may change if
one callback is interrupted by another. To obtain the right
handle during a callback, get the current object early, before
any calls to DRAWNOW, WAITFOR, PAUSE, FIGURE, or GETFRAME which
provide opportunities for other callbacks to interrupt.
If no figures exist, GCO returns [].