簡體   English   中英

如何訪問另一個MATLAB GUI的句柄

[英]How to access handles of another MATLAB GUI

我在MATLAB中有兩個GUI。 我將某些值存儲在GUI1的handles結構中,以便當它顯示在“命令窗口”中時,看起來像這樣:

        GUI1: [1x1 Figure]
        pushbutton2: [1x1 UIControl]
              text2: [1x1 UIControl]
              edit1: [1x1 UIControl]
             output: [1x1 Figure]
              val1: 0

我想使用val1在GUI2中設置一個值counter 我沒有任何命令可以在GUI2中初始化counter 如何在GUI2中訪問GUI1的句柄?

我試圖使用命令guidata(findobj('Tag','GUI1'))來獲取這些句柄,但它向我顯示它為空。

我嘗試執行以下操作:

在GUI1中的OpeningFcn下:

handles.val1 = 0;
guidata(hObject, handles);
setappdata(handles.GUI1,'val1', handles.val1)

在GUI2中的按鈕功能中:

counter = getappdata(handles.GUI1,'val1')

但這似乎也不起作用! 它給我一個錯誤,說:“引用不存在的字段'GUI1'。”

我具有GUI1的句柄可見性,並且標記設置為“ GUI1”。 為什么我仍然有這個問題?

您應在找到對象之前設置GUI的標簽,即GUI1的Tag = GUI1 然后,您可以嘗試查找根對象的所有子代:

gui1_H = get(0,'Children', 'Tag', 'GUI1');

或者只是使用findobj

gui1_H = findobj('Type', 'figure', 'Tag', 'GUI1');

在某些情況下,GUI的HandleVisibility設置為off ,在這種情況下,您可以在GUI2中使用findall

gui1_H = findall(0, 'Type', 'figure', 'Tag', 'GUI1');

並獲取句柄結構:

data = guidata(gui1_H);
disp(data.val);

請注意,您目前出口2點的GUI在同一時間,所以如果你保留兩個圖形用戶界面的默認標簽應figure1 ,然后gui1_H將不會被計算為圖形對象的句柄,因此你也無法獲得其guidata

暫無
暫無

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

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