I have begun my program by defining a variable Ground, where Ground=40. I have a ui text field corresponding to this variable, and when a user edits the text field by typing a number, I want my callback function to update the value of the Ground variable in my workspace. How can this be done? Below is what I have written, which does not work.
Ground=40;
ground_control=uicontrol('Style','edit', 'String', num2str(Ground), 'Position', [315, 70, 70, 20], 'Callback', {@change_ground});
function [Ground] =change_ground(hObject, eventdata, handles)
Ground=str2double(hObject);
end

回答 (1 件)

Voss
Voss 2022 年 2 月 22 日

0 投票

It's not typically necessary (or a good idea) to have data in a UI mirrored in the base workspace, but here's how you can do it (for educational purposes).
Ground=40;
ground_control=uicontrol('Style','edit', 'String', num2str(Ground), 'Position', [315, 70, 70, 20], 'Callback', {@change_ground});
function change_ground(hObject, eventdata, handles)
Ground = str2double(get(hObject,'String'));
assignin('base','Ground',Ground);
end
Typically your uicontrol would be part of a larger GUI that would be handling all the data, so that's why you wouldn't need to do this.

カテゴリ

ヘルプ センター および File Exchange で Interactive Control and Callbacks についてさらに検索

製品

リリース

R2019b

質問済み:

2022 年 2 月 21 日

回答済み:

2022 年 2 月 22 日

Community Treasure Hunt

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

Start Hunting!

Translated by