簡體   English   中英

如何將變量傳遞給通過指南創建的 function

[英]How to pass variable to a function created through the guide

我在 MATLAB GUIDE 中開發了一個 GUI。 使來自外部 function 或 class 的數據可用於 GUIDE 創建的函數的最佳方法是什么?

ymihere提供的鏈接看起來很有幫助。 此外,在這些鏈接中討論的一些選項(嵌套函數和使用GUIDATA )在 SO 的另一篇文章中得到了解決: 如何在 MATLAB 的 function 內創建 GUI? 那里有幾個例子說明代碼在每種情況下的外觀。

我個人偏愛使用嵌套函數,因為我覺得在大多數情況下它會創建更短、更簡潔的代碼。 但是,如果您是 MATLAB 的新用戶(可能需要一點時間來適應),那么共享應用程序數據的方法可能會更加困難。 對您來說最簡單的選擇可能是在調用 function 時設置“UserData”屬性(如ymihere建議的那樣)。 如果您將 GUIDE GUI 保存到“myGUI.m”,那么您將調用:

>> hGUI = myGUI('UserData','hello');

其中hGUI是您的 GUI object 的句柄。 然后,您可以獲取“UserData”屬性以查看它是否包含字符串“hello”:

>> get(hGUI,'UserData')

ans =

hello

除了“你好”,你可以放任何你想要的東西,比如數據結構。 您應該能夠從 GUIDE m 文件的回調中訪問圖形的“UserData”字段。 您必須從傳遞給回調的handles參數中獲取圖形句柄。

編輯:使用“UserData”屬性或將數據附加到 object 的其他一些方法的一個缺點是數據可能被用戶或其他應用程序意外(或有意)覆蓋或以其他方式損壞。 使用嵌套函數在 GUI 回調之間共享數據的好處是,它將您的代碼與用戶或其他應用程序可能執行的任何操作隔離開來。 相反,使用全局變量可能相當危險。

我不知道你到底想做什么,但你可能想使用該圖的 UserData 屬性:

打開表單 myfig 時傳遞 somevar:

h = myfig('UserData', somevar);

或以后:

h = myfig();
[...]
set(h, 'UserData', somevar);

在圖中,您可以通過以下方式訪問該屬性:

function some_Callback(hObject, eventdata, handles)
    somevar = get(hObject, 'UserData');

查看鏈接文本鏈接文本

暫無
暫無

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

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