[英]how to send data from a function out GUI matlab to function GUI.m
如何在GUI中为静态文本传递值(x_locate,y_locate)? 由于该功能是由GUI生成的功能。 我没有实现配置set()函数。
我相信它使用的是句柄,但我尝试了所有操作并失败了。
为简化起见,我重写了代码:![在此处输入图片描述] [1]
“ Locations.fig”具有:1个轴,1个按钮和2个静态文本。
CTRL + C
function varargout = Locations(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Locations_OpeningFcn, ...
'gui_OutputFcn', @Locations_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
function Locations_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
function varargout = Locations_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function pushbutton1_Callback(hObject, eventdata, handles)
cla(handles.axes1,'reset');
axes(handles.axes1);
image = imread('eight.tif');
im = imagesc(image);
set(im,'ButtonDownFcn', @clique);
function clique (gcbo,eventdata,handles)
pos = get(gca, 'currentpoint');
x_locate = round(pos(1))
y_locate = round(pos(3)) % until here working!!!
set(handles.text1, 'string', ['x loc:' num2str(x_locate)]); %don´t working
set(handles.text2, 'string', ['y loc:' num2str(y_locate)]); %don´t working
将ButtonDownFcn
设置为:
set(im, 'ButtonDownFcn', @(src,evt)clique(src,evt,handles))
仅通过GUIDE(或某些其他自定义方式)设置的回调会收到额外的handles
参数。 否则,您将需要在clique
函数中手动检索handles结构 :
handles = guidata(<object>);
<object>
是什么的问题取决于您的GUI设置。 如果im
是GUI图形的子级,则gcbo
1将gcbo
。 如果在单独的图中,那么您需要获取GUI图的句柄。 使用findobj
枚举所有图形或搜索GUI图形的某些特定属性是执行此操作的直接方法。
例如,所有Handle Graphics对象都具有一个'Tag'
属性,您可以自由使用它,在这种情况下将很有用。 在GUIDE中,将GUI图形上的Tag
属性设置为'my GUI'
,然后可以从任何地方检索数据,如下所示:
hfig = findobj('Tag','my GUI');
handles = guidata(hfig);
[1]顺带一提,给变量与内置函数同名不是一个好主意
Notlikethat解决了问题! 谢谢!!!
所以:
x_locate = round(pos(1));
y_locate = round(pos(3)); % until here working!!!
hfig1 = findobj('Tag','text1');
handles = guidata(hfig1);
hfig2 = findobj('tag','text2');
handles = guidata(hfig2);
set(handles.text1, 'string', ['x loc:' num2str(x_locate)]);
set(handles.text2, 'string', ['y loc:' num2str(y_locate)]);
敲定
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.