我正在尝试从工作空间到gui edittext框中获取结构变量,这是我在多次试验后成功完成的,但我在显示变量时遇到了另一个问题。
我在将字符串应用到文本框后收到此警告。'单行编辑控件不能有多行文字'所以我将编辑框属性最大步骤更改为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);
任何人都请尽快帮我解决这个问题。
答案 0 :(得分:0)
如果您希望编辑框在模拟过程中显示值,则必须调用
set(handles.edit3,'string',currentValue);
模拟期间(其中currentValue是您要显示的值)。
模拟完成后,当且仅当我点击编辑时 一段时间后我得到显示的值,但也是 像向下滚动显示。
只有在单击后才会看到该值,因为该代码位于“回调”功能中,当您与编辑框进行交互时会调用该功能。 如果要在模拟结束时立即显示该值,请让模拟执行 set 命令以在编辑框完成时更新。
答案 1 :(得分:0)
您可能遇到问题,即Matlab进程在运行时不会更新屏幕。
在您的更新后添加drawnow
可能是必要的。但这只会在窗口处于前景时才有用。
我个人总是把东西写到日志文件中并在matlab之外显示。