有要的东西得到的shell()在运行时不做。即便如此,我仍然困惑如何我可以设置其他参数列表框(),但不包括这一个。奇怪。
列表框重置ListboxTop无视命令
3视图(30天)
显示旧的评论
我写一个GUI使用2016(没有指南)。一个元素在这个GUI uicontrol列表框,用户可以选择多个元素。这个列表框内创建面板如下所示:
uicontrol (“父”selSeries,“风格”,列表框的,“最小值”0,“马克斯”1 e3,…
“字形大小”8“单位”,“归一化”,“位置”,(0.02,0.02,0.94,0.94),…
“标签”,“selectSeriesChoiceBox”,“回调”@selectSeries_Callback)
selSeries在哪一个面板内uitab对象在uitabgroup驻留在图中。
在回调,我做的第一件事是调用“旧”数据选择和使用一些逻辑,引用它的“新”选择。的目的是允许用户点击列表如清单,而无需使用CTRL或SHIFT多个选择。我使用get / setappdata完成这个,是我渴望的行为。
当我设置新值,然而,MATLAB(设计)会自动改变滚动条的位置。我想留住用户的滚动条的位置。所以我试着更新属性“ListboxTop”后设置新的列表框的值。这个过程没有错误,但它将被忽略。
函数selectSeries_Callback (hObject、事件)
%的逻辑来确定新值向量,newValue
userTop = hObject.ListboxTop;
hObject。值= newValue;
hObject。ListboxTop = userTop;
%其他代码
结束
我也试过的方法设置属性使用设置(hObject, ListboxTop, userTop)。
增加了神秘的行为是调试。如果我再次尝试设置的属性在壳内,列表框再次不理我没有错误。然而,如果我把所有属性的壳,(如得到(hObject)或点击“所有属性”),然后设置属性,它工作。
这给了我一个快速解决方案的想法尝试做这样的代码:
函数selectSeries_Callback (hObject、事件)
%的逻辑来确定新值
userTop = hObject.ListboxTop;
hObject。值= newValue;
tmp = (hObject);
hObject。ListboxTop = userTop;
%其他代码
结束
这没有解决我的问题。列表框又仍在底部位置,不设为我问。然而,如果我在tmp设置一个断点,然后F10通过这两条线,它的工作原理!
这意味着,我有一些微妙的我失踪的活动对象。可能正在加载断点时(或一些)?我也试着在一个暂停,看看可能需要跟上。
任何见解,可以提供解决这将不胜感激。谢谢!
4评论
答案(2)
Prashant Arora
2017年4月27日
你好,
这似乎为我工作。我创建了一个uicontrol列表框,但在一个数字。
h = uicontrol (“父”gcf,“风格”,列表框的,“最小值”0,“马克斯”1 e3,…
“字形大小”8“单位”,“归一化”,“位置”,(0.02,0.02,0.94,0.94),…
“标签”,“selectSeriesChoiceBox”)
%添加一些字符串
h。字符串= repmat ({“你好”;“如何”;“是”;“你”5)};
然后我添加回调如下
函数selectSeriesChoiceBox(对象、事件)
newValue =对象。值+ 1;
userTop = object.ListboxTop;
对象。值= newValue;
对象。ListboxTop = userTop + 1;
结束
一件事,你可以尝试使用“drawnow”命令。这将更新MATLAB图,也许这就是失踪。