[英]Use a slider in MATLAB GUI
真的很簡單的問題。 我希望創建一個簡單的plot
GUI
,該plot
可以通過滑塊進行更改。 我一直在使用GUI,並在面板和axies1上有一個Slider +文本。 因此,對於初學者,我只希望滑塊從1:10開始(沒有特定的增量)並縮放y值(按1:10)。 我已經將數據導入到GUI中,因此省略了通用的自動生成代碼:
在Graphslide_OpeningFcn下
handles.OutAirTemp = OutAirTemp;
handles.SupAirTemp = SupAirTemp;
guidata(hObject,handles);
handles.a = get(handles.slider2,'Value');
plot(handles.SupAirTemp,handles.a*handles.OutAirTemp)
在slider2_Callback下
a = get(hObject,'Value')
很明顯,我缺少了一些東西! 任何指針,理論或代碼都會受到歡迎。
Edit1
上面沒有錯誤消息。 但是,在滑動滑塊時它並沒有改變圖形。
您沒有說您收到什么錯誤消息或問題出在哪里,所以我們無法猜測出什么問題了。 但是,有幾件事我看錯了:
plot
命令時指定要在其上繪圖的軸的手柄 對於您的slider2_Callback
,您可能需要
handles.a = get(hObject,'Value') guidata(hObject,handles);
對於您的Graphslide_OpeningFcn
,您不會說OutAirTemp
和SupAirTemp
來源。 我還將在函數末尾而不是在您執行中間的過程中發布guidata
。
滑塊回調是釋放后執行的回調。 在上面的代碼中,您需要更新在滑塊回調中的坐標軸上繪制的值。 你實際上很接近。 我認為改變這些路線:
handles.a = get(handles.slider2,'Value');
plot(handles.SupAirTemp,handles.a*handles.OutAirTemp)
滑塊回調內部將執行您想要的操作。
順便說一句,您可以看下面的代碼以生成帶有軸,滑塊和編輯框的簡單GUI,在其中顯示滑塊的當前值。 您還可以設置滑塊的屬性,例如最小值,最大值和步長,以獲取所需的行為。
function GUI_slider
clc
clear
%// Create GUI controls
handles.figure = figure('Position',[100 100 500 500],'Units','Pixels');
handles.axes1 = axes('Units','Pixels','Position',[60,100,400,300]);
handles.Slider1 = uicontrol('Style','slider','Position',[60 20 400 50],'Min',0,'Max',1,'SliderStep',[.1 .1],'Callback',@SliderCallback);
handles.Edit1 = uicontrol('Style','Edit','Position',[250 450 100 20],'String','Update Me');
handles.Text1 = uicontrol('Style','Text','Position',[180 450 60 20],'String','Slider Value');
handles.xrange = 1:20; %// Use to generate dummy data to plot.
guidata(handles.figure,handles); %// Update the handles structure.
function SliderCallback(~,~) %// This is the slider callback, executed when you release the it or press the arrows at each extremity.
handles = guidata(gcf);
SliderValue = get(handles.Slider1,'Value');
set(handles.Edit1,'String',num2str(SliderValue));
plot(handles.xrange,SliderValue*rand(1,20),'Parent',handles.axes1);
end
end
希望有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.