Creating a counter loop in MatLab, GUI?

15 ビュー (過去 30 日間)
Amed
Amed 2013 年 1 月 25 日
編集済み: Irwin2020 2018 年 11 月 22 日
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 件のコメント
Jan
Jan 2013 年 1 月 29 日
@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 2013 年 11 月 7 日
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.

サインインしてコメントする。

採用された回答

Jan
Jan 2013 年 1 月 29 日
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 件のコメント
Jan
Jan 2013 年 1 月 29 日
It initialized the UserData property to 0. Otherwise the default is [].
Irwin2020
Irwin2020 2018 年 11 月 22 日
編集済み: Irwin2020 2018 年 11 月 22 日
Jan , can you please help me create a counter -loop adding strings (Hex values)?

サインインしてコメントする。

その他の回答 (3 件)

Azzi Abdelmalek
Azzi Abdelmalek 2013 年 1 月 25 日
set(handles.text8,'string',num2str(a));
  5 件のコメント
Azzi Abdelmalek
Azzi Abdelmalek 2013 年 1 月 25 日
Look at the above code
Azzi Abdelmalek
Azzi Abdelmalek 2013 年 1 月 25 日
In opening function initialize
Set(handles.text8,'string','0')

サインインしてコメントする。


Amed
Amed 2013 年 1 月 25 日
編集済み: Amed 2013 年 1 月 25 日
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 件のコメント
Azzi Abdelmalek
Azzi Abdelmalek 2013 年 1 月 29 日
編集済み: Azzi Abdelmalek 2013 年 1 月 29 日
The initialization is not in the right place. You should do it in your opening function, not in your pushbutton function

サインインしてコメントする。


Amed
Amed 2013 年 1 月 29 日
Anybody else have any ideas? Still not solved
  2 件のコメント
Jan
Jan 2013 年 1 月 29 日
編集済み: Jan 2013 年 1 月 29 日
Please post comments in the comment section and not as an answer. Thanks.
simran
simran 2013 年 4 月 28 日
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.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by