[英]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.