Creating a counter loop in MatLab, GUI?

Hello, i'm trying to create a loop counter that will add increments of 1 every time I click a pushbutton. I don't really have any code as of yet since i'm new to programming but i've figured how to detect the button being pushed, and display a number in the static text. It keeps displaying '1', how do I display 1,2,3,.....n for every push? Here is what I have so far. Thanks a bunch
a = 0;
if (handles.pushbutton5)
a = a + 1;
set(handles.text8,'string',a);
end;

3 Kommentare

Azzi Abdelmalek
Azzi Abdelmalek am 25 Jan. 2013
What "if true" is for?
Jan
Jan am 29 Jan. 2013
@Azzi: As Walter has explained before when I've asked the same question, the "if true, ..., end" appears, when you hit the "code" button when no text is selected.
Wouter
Wouter am 7 Nov. 2013
And what if I want the option to count backwards?
I've tried creating a second pushbutton that produces:
counter = get(hObject, 'UserData') - 1;
However, no effect.

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Jan
Jan am 29 Jan. 2013

1 Stimme

I would avoid mixing the string and the numerical representation, although both are equivalent in this case. So you can add in the opening function:
set(handles.pushbutton5, 'UserData', 0);
and in the callback of this pushbutton:
function pushbutton5_Callback(hObject, EventData, handles)
counter = get(hObject, 'UserData') + 1;
set(hObject, 'UserData', counter);
set(handles.text8, 'String', sprintf('%d', counter));
If the field "text8" is missing, see FAQ: incomplete handles struct

4 Kommentare

% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, EventData, handles)
set(handles.pushbutton5, 'UserData', 0);
counter = get(hObject, 'UserData') + 1;
set(hObject, 'UserData', counter);
set(handles.text8, 'String', sprintf('%d', counter));
is what i wrote as the code. What do you mean adding into the 'opening function'
thanks
Thank you very much kind sir, it works. I'm just confused as to why I added
set(handles.pushbutton5, 'UserData', 0);
into opening function. What does that do for me?
Jan
Jan am 29 Jan. 2013
It initialized the UserData property to 0. Otherwise the default is [].
Irwin2020
Irwin2020 am 22 Nov. 2018
Bearbeitet: Irwin2020 am 22 Nov. 2018
Jan , can you please help me create a counter -loop adding strings (Hex values)?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (3)

Azzi Abdelmalek
Azzi Abdelmalek am 25 Jan. 2013

1 Stimme

set(handles.text8,'string',num2str(a));

5 Kommentare

Amed
Amed am 25 Jan. 2013
Bearbeitet: Amed am 25 Jan. 2013
converting a from a num to a string did not do it.
a = 0;
if (handles.pushbutton5)
a = a + 1;
set(handles.text8,'string',num2str(a));
end;
Azzi Abdelmalek
Azzi Abdelmalek am 25 Jan. 2013
Bearbeitet: Azzi Abdelmalek am 25 Jan. 2013
Because every time you have
a=0
Use
a=str2double(get(handles.text8,'string'))
instead of
a=0
Amed
Amed am 25 Jan. 2013
Bearbeitet: Amed am 25 Jan. 2013
yes i understand the code is wrong. so it reads as a = 0 every time. how do i allow some memory of sorts to be stored, so it knows to keep adding intervals of 1 to every click?
a=str2double(get(handles.text8,'string'));
if (handles.pushbutton5)
a = a + 1;
set(handles.text8,'string',a);
end;
I get NaN
Azzi Abdelmalek
Azzi Abdelmalek am 25 Jan. 2013
Look at the above code
In opening function initialize
Set(handles.text8,'string','0')

Melden Sie sich an, um zu kommentieren.

Amed
Amed am 25 Jan. 2013
Bearbeitet: Amed am 25 Jan. 2013

0 Stimmen

Anybody else?
i initialized it as
set(handles.text8,'string','0')
a = str2double(get(handles.text8,'string'));
if (handles.pushbutton5)
a = a + 1;
set(handles.text8,'string',a);
end;
but get a constant '1' answer every click.. it will not add +1 to each click and display

1 Kommentar

Azzi Abdelmalek
Azzi Abdelmalek am 29 Jan. 2013
Bearbeitet: Azzi Abdelmalek am 29 Jan. 2013
The initialization is not in the right place. You should do it in your opening function, not in your pushbutton function

Melden Sie sich an, um zu kommentieren.

Amed
Amed am 29 Jan. 2013

0 Stimmen

Anybody else have any ideas? Still not solved

2 Kommentare

Jan
Jan am 29 Jan. 2013
Bearbeitet: Jan am 29 Jan. 2013
Please post comments in the comment section and not as an answer. Thanks.
simran
simran am 28 Apr. 2013
put your initial value for counter in Property Inspector's User data property but not in pushbutton callback function. This will increment counter on every click of push button.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Interactive Control and Callbacks finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 25 Jan. 2013

Bearbeitet:

am 22 Nov. 2018

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by