我有一个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):我将弹出菜单对象保存在句柄中,以便在打开函数中使用它。
然后,在打开功能中,我可以这样做:
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"