Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 MATLAB GUIDE GUI列表框间歇性消失并出现过时错误

我正在使用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

实践中
  • 您说它是在使用GUIDE编辑后显现的。 GUIDE在后台创建代码。编辑完旧代码后,有时仍保留在后面。
  • 有时,MATLAB对一条语句中的顺序很敏感,即set(hlist, 'value', 2, 'string', {'aa','bb'})天真地将value设置为2直到string足够长并且使uicontrol无效。
  • MATLAB是有缺陷的,每年每两次新版本都会删除旧的并带来新的错误。如果您确定调试模式无法正常运行,那么这是MATLAB支持的一种情况。我有与m代码,p代码和编译后的exe相同的代码-相同的代码表现不同,主要在于GUI的工作方式。

更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 03:00


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.