Search code examples
matlabuisliderjslideruicomponents

How to get the value of an uicomponent slider on Matlab when a key is pressed?


How to get the value of a uicomponent slider on Matlab when a key is pressed? I'm using this in the GUI code:

% --- Executes just before teste is made visible.
function teste_OpeningFcn(hObject, eventdata, handles, varargin)

% Choose default command line output for teste
handles.output = hObject;
handles.slid=uicomponent('style','slider',0,9,5,'position',[10 30 200 50]);

set(handles.slid, 'KeyPressedCallback','handles.slid.value');

% Update handles structure
guidata(hObject, handles)

The slider works correctly, but when I press a key, this returns the error "Undefined variable "handles" or class "handles.slid.value". How to solve?


Solution

  • You can connect a callback to the desired event and get the value there from the src parameter

    handles.slid=uicomponent('style','slider',0,9,5,'position',[10 30 200 50]);
    set(handles.slid, 'KeyPressedCallback','sliderCallback');
    
    function sliderCallback(src,evt)
        display(['slider state ' num2str(get(src, 'Value'))]);
    end
    

    If the sliderCallback function is not accessible globally, you can instead set it through function pointer:

    set(handles.slid, 'KeyPressedCallback',@sliderCallback);