【问题标题】:Make a button push another button. Matlab GUI让一个按钮按下另一个按钮。 Matlab图形用户界面
【发布时间】:2017-02-07 23:55:00
【问题描述】:

我正在构建一个 GUI,当我按下按钮时会显示图像,但是有很多图像,有时我想跳过一些图像,所以我想要做的是,得到一个编辑texbox,我把我想去的图像的编号,按下一个按钮来按下另一个按钮,直到我得到想要的图像。我想这样做(按另一个按钮 x 次以获得所需的图像),因为在图像传递给另一个图像的同时发生了一堆并行的事情。

所以我的按钮代码是:

function pushbutton14_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton14 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
i = str2double(get(handles.edit4, 'String'));
while handles.counterN < i
    pushbutton1_Callback(hObject, eventdata, handles);
    guidata(hObject, handles);
end

所以每次我按下按钮 14 时,我都想让它按下按钮 1,直到计数器(每次按下按钮 1 时加 1n)达到 edit4 中的值。

但由于某种原因,guidata 没有更新,所以计数器始终保持为 1。

我有guidata(hObject, handles);,在按钮1功能的末尾...所以我不明白为什么没有更新,我也试过在while循环中没有guidata(hObject, handles);

【问题讨论】:

  • 我刚刚更新了我的答案。忘记了循环开始时需要计数器。

标签: matlab user-interface


【解决方案1】:

pushbutton1_Callback 正在递增 handles.counterN,但您永远不会得到递增的值。事实上,当回调返回时,您会立即用 1 覆盖它。请记住,在pushbutton14_Callback 的范围内,handles.counterN 为 1。pushbutton1_Callback 可能正在递增计数器,但不在调用函数的范围内。使用guidata 设置它不会更新pushbutton14_Callback 中的值,直到您调用handles = guidata(hObject);。由于pushbutton1_Callback已经调用了guidata(hObject, handles);,所以获取而不是设置数据:

guidata(hObject, handles); 替换为handles = guidata(hObject);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    相关资源
    最近更新 更多