我有一个骨架GUI应用程序,它提供了一组简单的菜单,其条目共享一个共同的回调函数,其唯一作用是设置全局变量MenuItem的值,该变量对于每个条目都是不同的。然后在Switch-Case表达式内为MenuItem的每个值调用不同的函数,Switch-Case保持在While循环内,其退出条件是MenuItem获得某个值。在While循环的尾部是一个uiwait调用,在Switch-Case之后。
这在Matlab 2009a下运行良好,但自从我升级到Matlab 2011b后它就被打破了。
在Matlab 2011b下,MenuItem的值在回调中被更改,但是这个更改的值似乎没有传播到Switch-Case。
2009a和2011b之间的任何变化都可能导致这种变化,并为它们提供解决方法?我尝试阅读发行说明,但无法发现任何看似相关的内容。
(我很欣赏这是一种结构化GUI的略显非常规的方式,它源于命令行编程的背景)
答案 0 :(得分:2)
我认为2009a和2011b之间的MATLAB中的GUI API没有变化。如果MenuItem更改没有传播到switch
个案例,那么您应该检查您比较的case
语句是否仍然有效。您至少应该在switch
语句后面发布代码,以便做出更合理的诊断。