how to cause a change in the colour of a push button every time it is pressed ?
8 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Kevin Phung
2019-2-26
编辑:Kevin Phung
2019-2-26
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 个评论
Robin Stengl
2019-12-9
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
更多回答(1 个)
Steve Kulakowski
2019-2-26
编辑:Steve Kulakowski
2019-2-26
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Interactive Control and Callbacks 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!