matlab - 如何在matlab中使ListBox持久化
问题描述
我正在 matlab 中开发一个 GUI,它有一个列表框。我打算用一些输入参数调用 GUI 函数,其中一个参数要添加到列表框中。由于 gui 中的默认列表框不是持久的,所以每次我使用输入参数调用 gui 函数时,列表框中的内容都会被覆盖。我正在尝试找到一种将列表框声明为持久的方法。下面是我用来在列表框中添加项目的代码。
names = get (handles.plotLB, 'string') ;
set (handles.plotLB,'string',{varargin{1},names{:}}) ;
解决方案
定义一组“持久”列表框项有多种可能性。
最简单的一种是在创建 GUI 本身时定义一个默认列表:
- 双击 GUIDE 面板中的列表框打开检查器
- 选择
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 更加灵活,您可以添加一个控件(例如 amenu item
或 a checkbox
),允许用户选择是否将列表保存在配置文件中。
推荐阅读
- amazon-web-services - 如何让 AWS Client VPN 使用 VPC 对等私有托管区域解析 DNS
- electron - 如何在电子应用程序中刷新访问令牌?google oauth2.0
- ios - iOS 10 AVPlayer 在 dealloc 时崩溃
- embedded - STM32F3DISCOVERY 微控制器 (STM32F303VC) 内存大小
- php - PHP将来自3个表关系的数据循环到每个div元素中
- git - 检测更改空白或注释的提交
- node.js - 如何使用 node.js 在 IBM Cloudant DB 中加载数据?
- express - 原型访问被拒绝,处理它的正确方法?“x”不是其父级的“自己的财产”
- python - 来自部分字典流的 Pandas DataFrame
- flutter - Flutter:我可以强制 Flutter 从 pubspec.lock 安装包吗?