2

我是 MATLAB-GUI 的新手。我看了几个视频,我了解复选框是如何工作的(基础),但似乎您必须预先定义您将拥有的复选框的位置和数量。

我在 MATLAB 中有一个表或结构(通过操作从 CSV 导入)

前几列的前:

Date      | Ticker | ShortName                     | RedCode
08-Jun-16 | NWS    | 21st Century Fox America, Inc.| 9J143F
08-Jun-16 | III    | 3i Group Plc                  | GOGCBA

我想在 GUI 中“导入”(所有行的滚动框,右端每行都有一个复选框),因此用户将选择他想要使用的行(选中复选框)。

然后,当用户在他的数据库中选择了他想要的所有行时,我想将它们导入/导出回 MATLAB(使用 GUI 作为过滤器,用户手动选择他想要的名称),按钮导入。

考虑到行数会有所不同,然后将它们导出回 MATLAB 以使用该列表,我需要怎么做才能导入右侧带有 #checkbox 的选择行?

4

2 回答 2

3

的文档uitable提供了一个示例,可以作为一个很好的起点。然后,您可以利用诸如逻辑索引之类的工具来处理对象的各种属性,uitable以获得所需的表输出。

例如:

function testgui
% Set up some data
LastName = {'Smith';'Johnson';'Williams';'Jones';'Brown'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
tf = false(size(LastName));
T = table(Age, Height, Weight, tf);

% Build a GUI
f = figure('Name', 'A uitable', 'NumberTitle', 'off', 'MenuBar', 'none', 'ToolBar', 'none');
uit = uitable('Parent', f, 'Data', table2cell(T), ...
              'Units', 'Normalized', 'Position', [0.1, 0.15, 0.8, 0.8], ...              
              'RowName', LastName, 'ColumnName', {'Age', 'Height', 'Weight', 'Export?'}, ...
              'ColumnEditable', [false false false true]);
butt = uicontrol('Parent', f, 'Style', 'pushbutton', 'String', 'Export Data', ...
                 'Units', 'Normalized', 'Position', [0.1, 0.05, 0.8 0.1], ...
                 'Callback', @(h,e)table2workspace(uit));
end

function table2workspace(uit)
tmp = uit.Data(:, 4);  % Get the state of our checkboxes
exportbool = [tmp{:}];  % Denest the logicals from the cell array
outT = cell2table(uit.Data(exportbool, 1:3), 'VariableNames', uit.ColumnName(1:3), ...
                  'RowNames', uit.RowName(exportbool));
assignin('base', 'outT', outT);  % Dump to base MATLAB workspace for demo purposes
end

这为我们提供了一个演示 GUI,我们可以使用它来将各种形状的表输出到基本 MATLAB 工作区:

耶

于 2017-08-11T16:30:17.757 回答
3

@excaza 链接的文档中所述,您可以通过创建uitable并捕获句柄来做到这一点:

f = figure;
t = uitable(f);

然后将数据(以元胞数组格式)添加到t.data. 探索t更多可以以编程方式设置的东西的属性!(您可以通过在工作区中打开变量“t”来执行此操作,双击)

于 2017-08-11T14:15:27.600 回答