GUI追加したい がありpopup menuます。表示されるpopup menuフィールドはファイルに保存されますtargets.txt。
プログラムを開くときにpopup menu、上記のファイルの行を含める必要があります。
プログラムで動的に変更したいので、これを行っています。 popup menu ユーザーが別のフィールドに入力したディレクトリ パスが含まれるため、ディレクトリ パスをファイルに保存し、ユーザーがフォルダーに入るたび popup menu に、ファイルに従って を設定します。(私はそれを実行しましたが、正常に動作します)
の各コンポーネントの を呼び出した後function myFunction_OpeningFcn(hObject, eventdata, handles, varargin)でしか呼び出されないため、プログラムの で初期化を行うことができませんでした。代わりに、私は次のようなことをしなければなりませんでした:"create function"GUI"opening function"
function databaseMenu_CreateFcn(hObject, eventdata, handles)
if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
handles.databaseMenuObject=hObject; % (1) see below
guidata(hObject, handles);
(1) : ポップアップ メニュー オブジェクトをハンドルに保存して、opening 関数で使用できるようにします。
そして、オープニング関数で私ができること:
fid_r = fopen('targets.txt', 'r');
C = textscan(fid_r, '%s');
set(handles.databaseMenuObject,'String', C{1});
したがって、誰かが"database"プログラムに新しいフォルダーを追加すると、popup menu 変更が行われます (ユーザーが選択したフォルダーをファイルに追加し、ファイルpopup menuからフィールドを取得するように設定します (上記の関数))。次のようになります。

コードのデザインが気に入らず、別の方法でそれを行う方法がわかりませんでした。プログラムの の後に の"create function"を"popup menu"呼び出す方法はありますか? または、私の目標を達成するためのより良い方法はありますか? "opening function"