2014-12-19 25 views
0

我想在matlab中製作2個滑塊,以便每當兩者的位置發生變化時,'回調函數'將自動訪問這兩個UI對象的值。實質上,這樣做的目標是使用滑塊來導航2維可變空間....在Matlab中鏈接2 UI(用戶界面)對象

問題是,似乎每個滑塊的回調函數只能訪問它的值...我是試圖讓它訪問兩者。

這裏是我的代碼的相關部分迄今:

slider1= uicontrol('Style','slider','Min',1,'Max',N,'Position',[200 130 200 20]); 
slider2= uicontrol('Style','slider','Min',1,'Max',N,'Position',[200 100 200 20]); 
     set(slider1,'Callback',{@makeWin3, %relevant variables%); 
     set(slider2,'Callback',{@makeWin3, %relevant variables%);  

回調函數如下:

function [] = makeWin3(hObj,notused, %relevant variables%) 
    n=round(hObj.Value);  %value of calling slider 
end 

任何幫助將不勝感激。日Thnx!

回答

1

我認爲一個安全的選擇是將兩個滑塊存儲在GUI的句柄結構中,然後您可以輕鬆地從您調用的任何函數或從GUI內部訪問它們。

例如,當定義UI組件,假設這個數字也創造時,它存儲在手柄結構:

%// Create figure 
handles.fig = figure(define figure properties here...) 

handles.slider1= uicontrol('Style','slider','Min',1,'Max',N,'Position',[200 130 200 20]); 
handles.slider2= uicontrol('Style','slider','Min',1,'Max',N,'Position',[200 100 200 20]); 
     set(handles.slider1,'Callback',{@makeWin3, %relevant variables%); 
     set(handles.slider2,'Callback',{@makeWin3, %relevant variables%); 

%// Store/update the handles in the handles structure with guidata. 
guidata(handles.fig,handles); %// Save handles structure of GUI. 

然後在你的回調函數,你可以檢索手柄結構如下所示:

function [] = makeWin3(hObj,notused, %relevant variables%) 

%// Retrieve elements from handles structure. 

    handles = guidata(handles.fig); 
    n=round(get(handles.sliderX,'Value'));  %value of calling slider 
end 

另一種解決方案是將句柄結構作爲參數傳遞給您的回調函數。

希望有幫助!

+1

@DankMasterDan你試過我的建議嗎?它有用嗎? –

+0

是的。 Thnx太多了! – DankMasterDan

+1

真棒然後很高興幫助! –