[英]how to access MATLAB GUI functions from a separate m file - matlab
我有一個名為main()的函數。 在這個“主”中,我調用了另一個函數A()。 我有一個向導,並在其中有一個變量“數字”。 如何從A()訪問'number'或從A()更改'number'的值?
1-下面的代碼不起作用。
main(handles)
%some code
A(handles);
function A(handles)
set(handles.number,0);
end
end
2-這也行不通。
main(handles)
%some code
A(handles);
function A(handles)
handles.setNumberFnc(5);
end
end
%%%%%in GUI i have this function.
function setNumberFnc(n)
handles.number = n;
guidata(hObject, handles);
我知道此函數沒有'hObject'我不知道該怎么辦?
3-我可以在GUI和A()中使用“全局編號”嗎?
您正在用我通常解決的另一種方法來解決問題。 對我而言,GUI是主要對象,並且我定義了按鈕回調以及諸如此類的調用外部腳本和函數的函數。
您要運行單獨的腳本或函數,然后修改GUI。 這也很好! 您所需要的只是GUI的句柄,例如可以通過gcf
(假定GUI是當前活動的圖形窗口)。 但是,您的setNumberFcn
是本地函數 (或者可能是嵌套函數 ,這幾乎是同一件事),並且您不能從其他腳本或函數文件中調用它。 相反,您必須按照以下方式將其放入main.m
文件中
function main()
fig_handle = gcf;
numfield_handle = findobj(gcf, 'NumFieldTagThatYouDefinedInGUIDE');
function setNumberFcn(numfield_handle, number)
set(numfield_handle, 'String', num2str(number))
end
end
我已經解決了我的問題。 只需要在所有必需的函數中全局定義變量“數字”。 現在,我可以輕松地在GUI或A()函數中更改'number'的值。 無需“設置”功能。
main()
%some code
A();
function A()
global number;
disp(number);
number = 5;
end
end
並在GUIde中:
function B_Callback(hObject, ~, handles)
global number;
number = 2;
guidata(hObject, handles);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.