0

私は多くのことを試し、Googleとstackoverflowを介して何千ものキーワードを調べましたが、文字通り常にまったく同じ(私にとっては役に立たない)ソリューションに陥っています。

これが私の問題です:

「visible」と「invi」の2つのラジオボタンを持つuibuttongroup「Youpi」を備えたGUIがあります。私は別の 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

動作せず、常に同じエラー メッセージが表示されます (以下を参照)。問題の原因を突き止めるために、次の 2 つのテストを行いました。 _disp 関数で大文字と小文字を変更しました。2 つのラジオ ボタンを切り替えると、メッセージが正しく表示されます。これは、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

解決策を見つけるのを手伝ってください。

ありがとうございました。

4

3 に答える 3

2

わかりました、解決策を見つけました。私はそれが最高のものではないと思いますが、少なくともそれは機能します。

「スイッチ」の前に、次のコマンドを追加しました。

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

そして、スイッチでは「ハンドル」を使用する代わりに「a」を使用します。

注:これはguihandlesでも機能します(この方法でhandles.outputにアクセスできます)

于 2011-04-20T08:22:05.953 に答える
0

選択変更関数の定義にハンドルを追加する必要があります

function Youpi_SelectionChangeFcn(hObject,eventdata, handles)
于 2011-04-19T16:36:19.473 に答える
0

ボタンの 1 つで画像を選択するたびに、ボタンを使用してグループ パネルを作成しました 各ボタンには画像があります ソース コードを見つけるのを手伝ってくれてありがとう uipanel4_SelectionChangeFcn 関数 (hObject, EVENTDATA, % hObject handle To The selected object in uipanel4 % With The followings EVENTDATA structure fields (UIBUTTONGROUP を参照) % EventName: string 'SelectionChanged' (read only) % OldValue: handle Of The 以前に選択されたオブジェクト、または何も選択されていない場合は空 WAS % NewValue : 現在選択されているオブジェクトのハンドル % ハンドルとユーザー データを含むハンドル構造 (GUIDAT を参照) if RadioButton1 == get (handles.radiobutton1, 'value', 1) Set (handles.axes4, 'because') else radioButton2 == get (handles.radiobutton2, 'value', 1) セット (handles.axes4 'man')

于 2011-05-03T22:18:18.440 に答える