簡體   English   中英

如何將數據從功能輸出到matlab到功能GUI.m

[英]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 1gcbo 如果在單獨的圖中,那么您需要獲取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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM