Why is the lamp color and label not changing according to the if statement?
8 次查看(过去 30 天)
显示 更早的评论
Hi! :)
I have this code ( see the attached code) within the callback function of one button that I have in my app.
As you can see I am bringing up antall soner from another app.
What I dont understand is why the lamp color and label statement is not changing according to the if statement.
Can anybody help me with my issue?
0 个评论
回答(1 个)
Voss
2024-1-7
编辑:Voss
2024-1-7
The lamp and label change inside a while loop. To see the changes as the code runs, you need to add drawnow after setting their properties, which updates the graphics immediately.
Another problem is that osmotisk_verdi is a character vector, so you don't want to be comparing it to numeric values. You can use str2double to make it numeric, but if app.Osmotic_pressure is numeric you can just use that instead (see comments in the code below).
app.zone_now=0;
while app.zone_now<=app.Callingapp.antall_soner
% assuming app.Osmotic_pressure is numeric, then to update the
% uieditfield, do one of the following:
% if the uieditfield is 'numeric' style, use app.Osmotic_pressure directly:
app.ComputedosmoticpressureEditField.Value=app.Osmotic_pressure;
% or if the uieditfield is 'text' style, use num2str(app.Osmotic_pressure):
app.ComputedosmoticpressureEditField.Value=num2str(app.Osmotic_pressure);
% and you can use app.Osmotic_pressure directly in your comparisons:
if app.Osmotic_pressure <= 30000000
app.Label.Text='Too low osmotic pressure';
app.Lamp.Color='red';
elseif app.Osmotic_pressure < 50000000
app.Label.Text='Intermediate osmotic presssure';
app.Lamp.Color=[1 1 0];
else
app.Label.Text='Beneficial osmotic pressure';
app.Lamp.Color=[0 1 0];
end
% update the GUI:
drawnow();
app.zone_now=app.zone_now+1;
end
另请参阅
类别
在 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!