1

我在 matlab 中创建了一个带有几个按钮的 GUI。单击时,每个按钮执行特定的功能。现在我想显示函数中正在执行的计算,以显示在 GUI 的静态文本框中。那可能吗?我可以通过删除语句末尾的分号 (;) 在命令窗口中显示它,但我希望它像日志一样显示在 GUI 中。

现在,当我单击“匹配”按钮时,会调用以下函数,我想在 GUI 的文本框中显示它是否匹配。那可能吗?

function matchin
[image1, pathname]= uigetfile('*.bmp','Open An image');
Directory = fullfile ('F:','matlab','bin');
D = dir(fullfile(Directory,'*.bmp'));
%imcell = {D.name}';
for i = 1:numel(D)
   if strcmp(image1,D(i).name)
       disp('matched');
   else
       disp('not matched');
   end
end;

我用答案中指定的代码替换了代码。在不使用文本框的情况下,当我选择第二个文件时,matlab 命令窗口中的输出是

not matched
matched
not matched
not matched 
not matched

但是,如果我使用静态文本框,则只显示最后一行。如何完全显示所有 5 行?

4

1 回答 1

2

是的,你可以这么做。

一个好的做法是使用函数 guidata 保存一个包含所有 GUI 元素句柄的结构。有关这方面的更多信息,请参阅此链接

然后在您的回调中,您可以检索此结构,例如:

handles = guidata(gcbo);

然后你可以通过替换来设置你想要的文本框的值

if strcmp(image1,D(i).name)
   disp('matched');
else
   disp('not matched');
end

和:

if strcmp(image1,D(i).name)
   set(handles.handle_of_textbox,'String','matched');
else
   set(handles.handle_of_textbox,'String','not matched');
end
于 2013-03-22T11:00:35.340 回答