【问题标题】:How to use the same variable in different functions in GUI MATLAB如何在 GUI MATLAB 的不同函数中使用相同的变量
【发布时间】:2019-02-06 16:05:30
【问题描述】:

我有一个带有以下代码的弹出菜单。有 C1 和 C2 两个选项。如果用户选择C1,我想将值设置为10,如果用户选择C2,我想将值设置为20。

function pop_Callback(hObject, eventdata, handles)

contents = cellstr(get(hobject,'String'));
A = contents{get(hObject,'Value')};
if (strcmp(A,'C1'))
    X = 10;
elseif (strcmp(A,'C2'))
    X = 20;
end
set(handles.pop,X)

我想使用另一个带有按钮和静态文本的函数来显示答案,输出在哪里,无论设置值 + 12。

function push_Callback(hObject, eventdata, handles)

inX = get(handles.pop,X);
out = inX + 12;
set(handles.ans,'String',out)

但是,我在 set 和 get 函数中有一些错误,因此我遇到了麻烦。请帮忙。

【问题讨论】:

标签: matlab user-interface get set matlab-guide


【解决方案1】:

为避免使用全局变量,您可以使用图形窗口的 UserData 属性(假设 uiobject 是同一图形的子对象)。例如:

function pop_Callback(hObject, eventdata, handles)

% ...

set( ancestor(hObject,'figure'), 'UserData', X )

function push_Callback(hObject, eventdata, handles)

inX = get( ancestor(hObject,'figure'), 'UserData' );
out = inX + 12;
set(handles.ans,'String',out)

【讨论】:

    【解决方案2】:

    也许你可以试试全局变量

    function pop_Callback(hObject, eventdata, handles)
    global X;
    contents = cellstr(get(hobject,'String'));
    A = contents{get(hObject,'Value')};
    if (strcmp(A,'C1'))
    X = 10;
    elseif (strcmp(A,'C2'))  
    X = 20;
    set(handles.pop,X)
    end
    

    并使用同一行代码全局 X;在任何你想使用变量 x 的函数中。

    function push_Callback(hObject, eventdata, handles)
    global X;
    out = X + 12;
    set(handles.ans,'String',out)
    

    在任何函数中对该 X 的值的任何更改对于将其声明为全局的所有函数都是可见的。

    【讨论】:

    • 我阅读了有关使用全局函数的信息,但在创建全局函数时遇到了问题。我不断收到错误消息,提示未定义“hObject”。我使用了用户数据,现在可以使用了,谢谢。很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    相关资源
    最近更新 更多