-3

ポップアップ メニューは最初は空のように見え、メニューを閉じて再度開くと、変数が表示されます。最初のオープニングで表示するように変更するにはどうすればよいですか。これはコードです:

% --- Executes on selection change in popupmenu2.
function popupmenu2_Callback(hObject, eventdata, handles)
% hObject    handle to popupmenu2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns  popupmenu2 contents as cell array
%        contents{get(hObject,'Value')} returns selected item from popupmenu2

% Identify the first popupm menu selected option
% not strictly necessary, just used to generare the messsage box      text
sel_op=get(handles.popupmenu1,'value');
% Idetify the selected option in the second popupmenu
opt=get(hObject,'value')
% Test the second popup menu selection:
    %if opt == 1: the default output file has been selected
if(opt == 1)
    %
    % Insert here the code to save the output in the default output file

ポップアップのゴールルック

4

1 に答える 1

1

メニューが次のように定義されているとします。Pop=uicontrol('style','popupmenu','string',' ');

次に、アクセス可能なコード内の任意の場所で、次のPopいずれかの行を使用できます。

%// assign only 2 number to the Pop menu
set(Pop, 'string', {num2str(val1); num2str(val2)});

%// assign only 2 numbers with labels to the Pop menu     
set(Pop, 'string', {...
        ['Val1 = ' num2str(val1)]; ...
        ['Val2 = ' num2str(val2)]});

または、次のようにして、読みやすく柔軟にすることもできます。

Pop_string = get(Pop, 'string');     %// Read actual String in Pop
Pop_string{3} = ['Val3 = ', Val3];   %// Update 3rd element
set(Pop, 'String', Pop_string);      %// Update the String in Pop

編集:

匿名関数を使用してサンプル コードを作成しました。 詳細はこちらを参照してください: Access nested functions from GUI :

function[]=activePop()
close all,clc
fig=figure;
Pop=uicontrol('style','popupmenu','string',' ');
uicontrol('style','pushbutton','string','Reset',...
  'callback',@(s,a)PushReset(),'position',[5 1 1 1].*get(Pop,'position'));
uicontrol('style','pushbutton','string','Update',...
  'callback',@(s,a)PushUpdate(),'position',[10 1 1 1].*get(Pop,'position'));

  function PushReset()      %// Resets the Pop's list
    N=ceil(5*rand(1));    %// The menu will have 1 to 5 entries
    Labels=cell(N,1);

    for ii=1:N
        Labels{ii}=['Val' num2str(ii) ' = ' num2str(rand)];  %// assign 'Val(ii) = ' label and random value to the list
    end

    set(Pop,'string',Labels)   %// display the list in Pop's menu
  end

  function PushUpdate()   %// Change one (randomly selected) value in Pop's menu
    PopString=get(Pop,'string');   %// get actual List of entries
    N=size(PopString,1);           %// find it's size
    ii=ceil(N*rand);               %// pick one random element
    Line=PopString{ii};            %// read the chosen line
    Line=regexp(Line,' ','split'); %// extract the label
    Line=[Line{1},' ',Line{2},' ',num2str(rand)]; %// update the line
    PopString{ii}=Line;            %// update the line
    set(Pop,'string',PopString);   %// send updated list to the Pop menu
  end

end
于 2016-03-14T14:55:28.073 に答える