Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我正在使用GUIDE构建简单的MATLAB gui。我有一个项目列表框。在大多数情况下,它会按预期工作,但有时(通常是在我使用GUIDE编辑地物之后),填充列表框会使其消失,并显示以下消息:
Warning: single-selection listbox control requires a scalar Value Control will not be rendered until all of its parameter values are valid 此行为无视调试!当我逐步执行时,它会按预期工作(我怀疑这是一种线程竞赛或其他某种形式)。此外,它通常在相同条件下重启MATLAB环境后消失。 找到的所有与此错误有关的文档均参考MATLAB的早期/早期版本(我正在使用R2010a)。 关于这个问题的任何想法或信息将不胜感激! 编辑:感谢米哈伊尔,我似乎已经解决了这个问题。我在这里发布我的代码以供将来参考。 经过大量的调试打印和疯狂的点击之后,我发现有时当您询问列表框选择了什么时,会得到空的结果。这个问题和其他问题使事情陷入困境。我将所有写作互动都移到了列表框的一个集中式函数中,并编写了一些测试代码以确保一切保持应有的状态。 请注意,这已经在我自己的环境中(在R2010a上)进行了测试,没有经过广泛的测试。另外,代码有点多余,但是无论如何它让我感觉很好。 (即itemcount不能小于0 ...) function ensure_listbox_ok(handles) %check to make sure it does not suck - ask what it has thestrings = get(handles.listbox_files, 'String'); selection = get(handles.listbox_files, 'Value'); itemcount = length(thestrings); betterselection = selection; if(itemcount itemcount) betterselection = itemcount; end end %never use zero!!!! even if 1 is out of bounds. if(isempty(betterselection) || betterselection 0。如果属性min > max ,则列表框(而不是Popup)可以是多选,在这种情况下, value可以是数组(这也意味着为空),并且空string不会引起问题。 阅读MATLAB帮助以获取uicontrol属性string, value, min, max, listboxtop 实践中
更多&回答... |
![]() |
![]() |