为什么QUESTDLG返回错误的按钮字符串如果我使用TAB键切换不同的按钮,然后按返回键使用MATLAB 7.3 (R2006b) ?

5视图(30天)
我想使用TAB键切换不同QUESTDLG按钮。
目前我只能用鼠标选择不同的按钮而不是TAB键。突出显示的按钮做得到但当你按返回键,默认选择总是返回。
例如:
ButtonName = questdlg (“你最喜欢的颜色是什么?”,
“颜色问题”,
“红色”,“绿色”,“蓝”,“绿色”);
开关ButtonName,
情况下“红色”,
disp (你最喜欢的颜色是红色的);
情况下“蓝”,
disp (“你最喜欢的颜色是蓝色的。”)
情况下“绿色”,
disp (你最喜欢的颜色是绿色。);
结束
执行上面的代码后,按下TAB键会导致不同的按钮高亮显示的,而绿色总是当你按返回键返回。

接受的答案

MathWorks支万博1manbetx持团队
能够使用TAB键切换不同QUESTDLG对话框上的按钮和激活按钮通过MATLAB的返回键不可用。
解决这个问题可以使用使用TAB键切换不同QUESTDLG对话框上的按钮,按空格键键字符串返回正确的按钮。
2的评论
图像分析
图像分析 2020年11月17日
这是固定的。在R2020b至少这不是一个问题。
ButtonName = questdlg (“你最喜欢的颜色是什么?”,
“颜色问题”,“红色”,“绿色”,“蓝”,“绿色”);
开关ButtonName
情况下“红色”
disp (你最喜欢的颜色是红色的);
情况下“蓝”
disp (“你最喜欢的颜色是蓝色的。”)
情况下“绿色”
disp (你最喜欢的颜色是绿色。);
结束

登录置评。

更多的答案(2)

蒂埃里Dalon
蒂埃里Dalon 2013年11月11日
编辑:蒂埃里Dalon 2013年11月11日
这个问题可以很容易通过添加/编辑2行questdlg: KeyPressFcn回调:
函数cb_KeyPressFcn (obj, evd)% TD
开关(evd.Key)
情况下{“返回”,“空间”}% TD
ButtonName = get (get (figureHandle,“CurrentObject”),“字符串”);
setappdata (figureHandle“ButtonName”,ButtonName);
uiresume (gcbf);
情况下“逃”
doDelete
结束
和之后uiwait改变线:
ButtonName = get (get (QuestFig,“CurrentObject”),“字符串”);
成:
ButtonName = getappdata (figureHandle,“ButtonName”);
如果isempty (ButtonName),%没有键盘按键,
ButtonName = get (get (figureHandle,“CurrentObject”),“字符串”);
结束
(questdlg的代码可能会稍微清理。TMO不需要这些DefaultWasPressed检查。)@Mathworks:计划修复它吗?(这个问题仍然存在R2013b)

费尔南多·帕切科
费尔南多·帕切科 2017年2月1日
编辑:费尔南多·帕切科 2017年2月1日
嗨,伙计们,
您可以使用此功能: https://gist.github.com/tdalon/612239aa8345912885559000c9a4a0f0 。一样QUESTDLG +但解决问题,如果用户按回车
或者可能他们已经固定为新版本!
欢呼,《外交政策》

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!