在GUI中更改面板属性

时间:2011-04-19 13:40:50

标签: user-interface matlab panel visible

我尝试了很多东西,并通过google和stackoverflow查看了关键词,而且我总是对同样的(对我来说无用)解决方案。

这是我的问题:

我有一个带有uibuttongroup“Youpi”的GUI,有两个单选按钮“visible”和“invi”。 我有另一个uipanel“Tralala”。

我创建了以下代码:

function Youpi_SelectionChangeFcn(hObject,eventdata)
switch get(eventdata.NewValue,'Tag') % Get Tag of selected object.
    case 'visible'
        set(handles.Tralala, 'visible', 'on');
    case 'invi'
        set(handles.Tralala, 'visible', 'off');
    otherwise
        % Code for when there is no match.        
end

它不起作用,我总是得到相同的错误消息(见下文)。 我做了这两个测试来找出问题所在: _I通过disp函数改变了大小写:当我切换两个单选按钮时,消息显示正确。它不是来自SelectionChangeFcn函数。 _在第一个名为“GUI_OpeningFcn”的函数中,我输入set(handles.Tralala, 'visible', 'off');并且它正常工作(例如,如果我运行GUI,我看不到面板)。

你知道为什么面板手柄从一个功能消失到另一个功能吗?

以下是错误消息:

??? Undefined variable "Tralala" or class "handles.Tralala".

Error in ==> MaccorGUI>Youpi_SelectionChangeFcn at 272
        set(handles.Tralala, 'visible', 'on');

Error in ==> hgfeval at 63
        feval(fcn{1},varargin{:},fcn{2:end});

Error in ==> uitools.uibuttongroup.childAddedCbk>manageButtons at 80
    hgfeval(cbk, source, evdata);

??? Error while evaluating uicontrol Callback

请帮我找一个解决方案。

谢谢。

3 个答案:

答案 0 :(得分:2)

好的,我找到了解决方案。我不认为这是最好的,但至少它是有效的。

在“切换”之前,我添加了以下命令:

a = guidata(get(hObject,'parent'));

在开关中,而不是使用“句柄”,我使用“a”。

注意:它也适用于guihandles(你可以通过这种方式访问​​handle.output)

答案 1 :(得分:0)

您需要将句柄添加到选择更改函数定义

function Youpi_SelectionChangeFcn(hObject,eventdata, handles)

答案 2 :(得分:0)

我创建了一个带有按钮的组面板,每次我按下一个按钮选择一个图像,他每个按钮都有一个图像 感谢您帮助我找到源代码 我在做 uipanel4_SelectionChangeFcn函数(hObject,EVENTDATA,handle) %hObject句柄到uipanel4中的所选对象 %具有以下EVENTDATA结构字段(请参阅UIBUTTONGROUP) %EventName:string'SelectionChanged'(只读) %OldValue:先前选定对象的句柄,如果没有选择WAS,则为空 %NewValue:当前所选对象的句柄 %处理具有句柄和用户数据的结构(请参阅GUIDAT) 如果RadioButton1 == get(handles.radiobutton1,'value',1)       设置(handles.axes4,'因为')   else radioButton2 == get(handles.radiobutton2,'value',1) 设置(handles.axes4'man')

相关问题