Как сделать ListBox постоянным в Matlab - PullRequest
0 голосов
/ 24 апреля 2018

Я разрабатываю графический интерфейс в Matlab, и у него есть список. Я планирую вызвать функцию GUI с некоторыми входными аргументами, и один из аргументов нужно добавить в список. Поскольку список по умолчанию в графическом интерфейсе пользователя не является постоянным, поэтому каждый раз, когда я вызываю функцию графического интерфейса пользователя с входным аргументом, в окне списка происходит переопределение. Я пытаюсь найти способ объявить список как постоянный. Ниже приведен код, который я использую для добавления элементов в список.

names = get (handles.plotLB, 'string') ;
set (handles.plotLB,'string',{varargin{1},names{:}}) ;

1 Ответ

0 голосов
/ 29 апреля 2018

Существует несколько возможностей определить «постоянный» набор элементов списка.

Самый простой способ - определить список по умолчанию при создании самого графического интерфейса:

  • двойной щелчокв списке в панели GUIDE откроется Инспектор
  • , выберите свойство String
  • , щелкнув по значку, откроется редактор элементов, в который можно записать элементы по умолчанию

enter image description here

Затем вы можете добавить к этим элементам по умолчанию те, которые вы вводите в качестве ввода, добавив следующее в 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, вы можете сохранять элементы списка при закрытии графического интерфейса.

Чтобы сделать это, вы должны добавить следующее в 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);

Чтобы сделать графический интерфейс более гибким, вы можете добавить элемент управления (например, menu item или checkbox), позволяющий пользователю выбирать, сохранять или нет список в файле конфигурации.

...