【发布时间】:2017-07-07 04:36:40
【问题描述】:
我有一个 uibuttongroup,其中定义了单选按钮。我定义了带有相应属性的 uipanels。我想要做的是能够单击一个单选按钮并出现一个 uipanel,然后单击我的另一个单选按钮以显示另一个 uipanel。这是我的代码的 sn-ps:
operation_type_1 = uibuttongroup(S.Test, 'Title', 'Operation Type', 'position', [0 0.3 panel_w/2 0.15]);
uicontrol('Parent',operation_type_1, 'Style', 'radiobutton',...
'String', 'invisible',...
'position', [0 0 0 0], 'Tag', 'invisibutton');
uicontrol('Parent',operation_type_1,'Style','radiobutton',...
'String', 'Time Operation',...
'Position', 100*[0.1 flooring(3.5, 'tp') 1.2 0.15], 'Tag', 'timeop1');
uicontrol('Parent',operation_type_1,'Style','radiobutton',...
'String', 'Volume Operation',...
'Position', 100*[0.1 flooring(2.5, 'tp') 1.2 0.15], 'Tag', 'volumeop1');
这定义了我的按钮组和两个单选按钮。
然后我有创建音量面板的代码:
还有一个时间面板:
它们处于相同的位置。我想要的是能够单击“时间操作”单选按钮并使时间面板可见,当我单击“音量操作”单选按钮时,音量面板可见。
我尝试过使用 switch case 语句。我没有得到错误,但我也没有得到结果。例如,我对时间和音量面板的案例陈述是:
switch str
case 'timeop1'
if U.Value; S.result_panel_time1.Visible = 'On';
else S.result_panel_time1.Visible = 'Off';
end
case 'volumeop1'
if U.Value; S.result_panel_volume1.Visible = 'On';
else S.result_panel_volume1.Visible = 'Off';
end
如何让它工作?我没有使用 GUIDE,只是编写了一个 MATLAB GUI。
更新
我已尝试实现下面建议的回调,但我收到“函数定义放错位置或嵌套不正确”。错误。我使用以下功能:
function button_callback(U, varargin{2})
switch get(get(operation_type_1, 'SelectedObject'), 'Tag')
case 'timeop1'
if U.Value; S.result_panel_time1.Visible = 'On';
else S.result_panel_time1.Visible = 'Off';
end
case 'volumeop1'
if U.Value; S.result_panel_volume1.Visible = 'On';
else S.result_panel_volume1.Visible = 'Off';
end
end
end
我已将回调“...'callback', {@pb_call, S}”添加到我的 timeop1 和 volumeop1。 (因为我拥有的所有其他功能都在一个名为 pb_call.m 的 .m 文件中)。该函数似乎嵌套得很好,但错误指向的正是那个。
【问题讨论】:
标签: matlab user-interface