0

我试图从工作区获取一个结构变量到 gui 编辑文本框,经过多次试验我成功地做到了,但是在显示变量时我遇到了另一个问题。

将字符串应用于文本框后,我收到此警告。单行编辑控件不能有多行文本'所以我将编辑框属性最大步长更改为 2,这样我就可以避免这个错误。

我的意图是在模拟正在进行时显示变量值,但我无法做到。模拟完成后,当且仅当我在一段时间后单击编辑框时,我才会显示值,但这也像向下滚动显示。

function edit3_Callback(hObject, eventdata, handles)
% hObject    handle to edit3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

simout=evalin('base','simout');
L = length(simout);
vars = cell(1,L);
[vars{1:L}] = simout.signals.values;
set(handles.edit3,'string',vars);
guidata(hObject,handles);

任何人请尽快帮我解决这个问题。

4

2 回答 2

0

如果您希望您的编辑框在模拟过程中显示值,您必须调用

set(handles.edit3,'string',currentValue);

模拟期间(其中 currentValue 是您要显示的值)。

模拟完成后,当且仅当我在一段时间后单击编辑框时,我才会显示值,但这也像向下滚动显示。

只有在单击后才能看到该值,因为该代码位于“回调”函数中,当您与编辑框交互时会调用该函数。如果您想在模拟结束时立即显示该值,让您的模拟在完成时执行set命令以更新编辑框。

于 2012-05-31T07:12:13.570 回答
0

您可能会遇到问题,即 Matlab 进程在运行时不会更新屏幕。

drawnow在您的更新之后可能需要包括在内。但这仅在窗口位于前台时才有帮助。

就我个人而言,我总是将内容写入日志文件并在 matlab 之外显示。

于 2012-05-31T07:19:27.297 回答