簡體   English   中英

OpeningFcn Matlab指南-以正確的順序初始化句柄和調用函數

[英]OpeningFcn Matlab GUIDE - initialising handles and calling function in correct order

我正在一個項目中,使用Matlab GUI在按下按鈕時實時在音頻輸出之間進行切換。 我有一個Matlab GUIDE文件和一個使用Audio System Toolbox的函數,該函數可偵聽GUI動作。

GUIDE文件具有OpeningFcn,在GUI可見之前,我在其中聲明了各種句柄。 在OpeningFcn中,我聲明“ handles.AttenuationFactor”。 有一個想法是,當用戶以后按下GUI中的按鈕時,手柄.AttenuationFactor會相應地更改。

使獨立的函數監聽GUI動作沒有問題。 我只是從正確的GUI對象檢索GUI句柄:

gui = findobj('Tag','GUI’);

if ~isempty(gui)
   % get handles
   gdata = guidata(gui);
   AttenuationFactor = gdata.AttenuationFactor;
end

%% Perform calculations with attenuation factor

這是泡菜:什么時候調用監聽GUI的函數?

我無法在OpeningFcn中調用它,因為還沒有調用代碼guidata(hObject,handles)的最后一行,因此從“ GUI”中獲取信息時,“ handles.sensitive.Factor”不存在!

我嘗試過將函數調用放在buttonpress的回調函數中,但這將意味着創建只應執行一次才能在每次buttonpress上求值的代碼。

有什么方法可以強制在函數調用之前更新句柄?

在開頭,您需要設置一個基准值。 可能會調用全局變量並設置值。 相應地更新句柄。

您應該使用matlab的set / get函數來處理句柄。 設置handles.sensitive.Factor是什么意思?

如果用戶更改了衰減系數的值,則一旦更改,就可以在按鈕的回調中輕松地檢索該值。 get(handles.attenuationFactor,'Value')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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