簡體   English   中英

如何從單獨的M文件訪問MATLAB GUI函數-MATLAB

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

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