Clear static text after press a push button
1 回表示 (過去 30 日間)
古いコメントを表示
I am a newbie and I begin with creating a calculator in MATLAB GUI. I almost complete my project, just a problem I cannot solve.
I want to clear static text which displays result of a calculation after I press push button of number.
For example, I have 3 + 5, press equal button will display 8 in static text. Now I want to press number 4 and it will display 4 in static text instead of 84.
What should I do? Many thanks for your helps!
0 件のコメント
回答 (1 件)
Abhishek Kumar Singh
2024 年 5 月 28 日
Hi @Ken
I am not familiar with the specific code you're referencing to create the calculator. Therefore, I experimented with a sample code of my own:
function calculator_gui
% Create a GUI figure
fig = figure('Name', 'Calculator', 'NumberTitle', 'off', 'Position', [200, 200, 300, 400]);
% Create a static text to display the numbers and results
result_text = uicontrol('Style', 'text', 'String', '', 'Position', [50, 320, 200, 50], 'FontSize', 20);
% Create number buttons
for i = 1:9
uicontrol('Style', 'pushbutton', 'String', num2str(i), 'Position', [50 + mod(i-1, 3)*70, 200 - floor((i-1)/3)*70, 50, 50], 'Callback', @numberButtonCallback);
end
% Create operation buttons
uicontrol('Style', 'pushbutton', 'String', '+', 'Position', [200, 200, 50, 50], 'Callback', @operationButtonCallback);
uicontrol('Style', 'pushbutton', 'String', '=', 'Position', [200, 130, 50, 50], 'Callback', @equalButtonCallback);
uicontrol('Style', 'pushbutton', 'String', 'C', 'Position', [50, 130, 50, 50], 'Callback', @clearButtonCallback);
% Initialize variables
current_expression = '';
previous_result = '';
% Callback function for number buttons
function numberButtonCallback(hObject, ~)
num = get(hObject, 'String');
if strcmp(previous_result, result_text.String)
current_expression = '';
end
current_expression = [current_expression, num];
result_text.String = current_expression;
end
% Callback function for operation buttons
function operationButtonCallback(~, ~)
current_expression = [current_expression, '+'];
result_text.String = current_expression;
end
% Callback function for equal button
function equalButtonCallback(~, ~)
result = eval(current_expression);
result_text.String = num2str(result);
previous_result = result_text.String;
current_expression = '';
end
% Callback function for clear button
function clearButtonCallback(~, ~)
current_expression = '';
result_text.String = '';
end
end
In this, the function 'numberButtonCallback'checks whether the previous results is displayed in the static text ('result_text.String'). If the pervious result is displayed, it means the user just completed an operation and wants to start a new expression. In this case, it clears the 'current_expression' variable to start fresh.
Then it appends the pressed number to the 'current_expression' variable and finally it updates the static text ('result_text.String') to display the updated 'current_expression'.
I hope it helps!
0 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!