您可以用不同的方式
1.將數據傳送到特定GUI對象使用的UserData
的GUI對象的屬性UserData
可以存儲您所選擇的變量(存儲幾個變量只是收集它們的結構,細胞或陣列。 使用對象句柄get
或set
的數據。例如,設定/與標籤獲得編輯文本框的UserData EDIT1
set(handles.edit1, 'UserData', 2)
get(handles.edit1, 'UserData')
ans =
2
請注意,在回調中,您可以編寫hObject
以獲取當前句柄。
2.使用應用數據
一個非常simular方法是利用setappdata
和由此產生與該對象相關聯的自己鍵值地圖存儲數據到GUI對象/處理。與UserData方法的區別在於,您可以創建多個不同的鍵值對(因此需要收集struct/cell/array中的所有內容並不是那麼迫切)。
setappdata(handles.edit1, 'Foo', 1);
setappdata(handles.edit1, 'Bar', 3);
getappdata(handles.edit1)
ans =
Foo: 1
Bar: 3
getappdata(handles.edit1, 'Foo')
ans =
1
3.使用guidata
另一變型是分配單個varible(像的UserData)至主GUI圖而不是一個特定的手柄。這是通過使用guidata
完成的。沒有鍵/名稱用於設置數據。
guidata(anyHandleInGUI, myData)
第一個輸入是一個主要圖形句柄或其任何子項。
guidata(handles.edit1, 5)
guidata(handles.edit1)
ans =
5
假設您的按鈕具有標籤pushbutton1。由於guidata
找到根父級(圖形手柄),因此可以使用其手柄獲取相同的數據。
guidata(handles.pushbutton1)
ans =
5
有沒有辦法將數據添加到一個變量而不是一個GUI對象?因爲我希望它在單擊某個對象後能夠工作,但在下次我將需要它時將其另存爲全局變量。 – Ben
@ben也許你應該看看['persistent'](https://se.mathworks.com/help/matlab/ref/persistent.html)變量。這些電話的價值保持在通話之間。使用'isempty'來查看是否設置了變量,否則更新它。 另一種選擇是「全局」變量,但是應該小心處理,因爲它很容易混淆 – NLindros