我正在使用matlab开发GUI,它有一个列表框。我打算用一些输入参数调用GUI函数,其中一个参数想要添加到列表框中。因为gui中的默认列表框不是持久的,所以每当我用输入参数调用gui函数时,事情都会在列表框中被覆盖。我试图找到一种方法将列表框声明为持久性。下面是我用来在列表框中添加项目的代码。
names = get (handles.plotLB, 'string') ;
set (handles.plotLB,'string',{varargin{1},names{:}}) ;
答案 0 :(得分:1)
有几种方法可以定义一组“持久”的列表框项目。
最简单的方法是在创建GUI本身时定义默认列表:
String
属性然后,您可以通过在GUI OpeningFcn
handles.output = hObject;
handles.listbox1.String=[varargin{1},handles.listbox1.String{:}]
% Update handles structure
guidata(hObject, handles);
另一种可能性是在OpeningFcn
中定义默认列表,然后添加作为输入提供的列表:
handles.output = hObject;
in_list={'default_item_1' 'default_item_2' 'default_item_3'}
handles.listbox1.String=[varargin{1},in_list]
% Update handles structure
guidata(hObject, handles);
您还可以创建一个configuration
文件,在其中定义默认列表;在这种情况下,您可以在OpeningFcn
中阅读它,然后添加作为输入提供的那个:
handles.output = hObject;
if(exist('save_listbox_string_config.txt'))
fp=fopen('save_listbox_string_config.txt')
C=textscan(fp,'%s');
fclose(fp);
handles.listbox1.String=[C{1}(1:end);varargin{1}']
end
% Update handles structure
guidata(hObject, handles);
此解决方案允许您通过添加/删除项目轻松管理默认列表。
此外,使用configuration
文件方法,您可以在关闭GUI时保存列表框项。
为此,您必须在CloseRequestFcn
中添加以下内容:
fp=fopen('save_listbox_string_config.txt','wt')
C=handles.listbox1.String
for i=1:size(C)
fprintf(fp,'%s\n',char(C(i)))
end
fclose(fp);
为了使GUI更灵活,您可以添加一个控件(例如menu item
或checkbox
),允许用户选择是否保存配置文件中的列表。