how to cause a change in the colour of a push button every time it is pressed ?
8 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Dany Majed
el 26 de Feb. de 2019
Comentada: Robin Stengl
el 9 de Dic. de 2019
how to insert a pushbutton in GUI that can change its color everytime the pushbutton is pressed. I need it to switch its color to another color
so for example: I need in first push change to green in second push into orange and after 6 colors have been placed i need it to repeat the same series of color back again after all 6 colors specified has been displayed then need to save its state. so how can i do that please ? .Thanks in advance.
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
0 comentarios
Respuesta aceptada
Kevin Phung
el 26 de Feb. de 2019
Editada: Kevin Phung
el 26 de Feb. de 2019
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
colors = [ 1 0 0; 0 1 0; 0 0 1] %this will be your array of colors
if hObject.UserData == size(colors,1)
hObject.UserData = 0 %if it reaches the end, reset
end
hObject.UserData = hObject.UserData + 1; %stores this data within the button itself
state = hObject.UserData;
hObject.BackgroundColor = colors(state,:);
%note: ForegroundColor is the color of the string, BackgroundColor is the color of the button
make sure you set the 'UserData property of your button to 0 for its initial state, example :
button = uicontrol('style','pushbutton',...
'callback',@pushbutton1_Callback,...
'UserData',0)
In this example, button will turn from red, green, blue, then the cycle repeats.
Can you be clear as to what you mean by 'saves its state?'
7 comentarios
Robin Stengl
el 9 de Dic. de 2019
Hey guys, i have the same problem with the length of the vector. And I have not got the line : hObject.UserData =0
what should i do now?
And where should i place the button = ... in my gui
Thank you for your help
Más respuestas (1)
Steve Kulakowski
el 26 de Feb. de 2019
Editada: Steve Kulakowski
el 26 de Feb. de 2019
Hello,
The way in which I know how to do it is as follows. You may have to tweak the code a little before it works properly, but the general idea is that you need a global variable outside of your function call. The if/else statement will toggle everytime the pushbutton is called. Also I'm sure there are other/better ways to do this, but this is the only way I know how.
Best of luck!
global control
control = 1
function pushbutton1_Callback(hObject, eventdata, handles)
global control
if control == 1
set(handles.pushbutton,'BackgroundColor',[0 1 0]);
control = 0
else
set(handles.button_connect_s1,'BackgroundColor',[1 0 0]);
control = 1
end
end
2 comentarios
Ver también
Categorías
Más información sobre Interactive Control and Callbacks en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!