필터 지우기
필터 지우기

Help with listbox in DICOM

조회 수: 3 (최근 30일)
Adam
Adam 2012년 2월 9일
편집: Image Analyst 2013년 10월 7일
Hi, I have more questions? When you load paintings (DICOM) in the list box will display the first list, but when I select another from the listbox does not appear. Thanks a lot in advance.
h1=figure;
handles.ListBox=uicontrol('Units','Normalized','Position',[0.01 0.1 0.1 0.15],...
'Style','List');
P=fileparts(mfilename('fullpath'));
nfolder=uigetdir(P,'cokoliv');
handles.dfolder=nfolder;
dfiles=dir(handles.dfolder);
dfiles=dfiles(3:end);
nfiles=length(dfiles);
if nfiles<1
disp('no files availabel.')
return;
end
set(handles.ListBox,'String',char(dfiles.name),'value',1);
s = [num2str(nfiles) ' files in: ' handles.dfolder];
fname=get(handles.ListBox,'String');
fname=fname(get(handles.ListBox,'value'),:);
info=dicominfo([handles.dfolder '\' fname]);
Y1=dicomread(info);
imshow(Y1)
clims = [10 1800];

답변 (1개)

Walter Roberson
Walter Roberson 2012년 2월 9일
Your part from 'fname=' onward should be in a separate routine that you have set as being the Callback for the uicontrol. This will probably require that you wrap your original code inside a function
function dilist
h1 = figure;
handles.ListBox=uicontrol('Units','Normalized','Position',[0.01 0.1 0.1 0.15],...
'Style','List', 'Callback', @dilist_callback);
P=<etc>
[...]
s = [num2str(nfiles) ' files in: ' handles.dfolder];
end
function dilist_callback(src, evt)
fname=get(handles.ListBox,'String');
fname=fname(get(handles.ListBox,'value'),:);
info=dicominfo([handles.dfolder '\' fname]);
Y1=dicomread(info);
imshow(Y1)
clims = [10 1800];
end
  댓글 수: 1
Adam
Adam 2012년 2월 9일
I followed your instructions. But after launching matlab I reported the error:
??? Undefined variable "handles" or class "handles.ListBox".
Error in ==> dilist> dilist_callback at 23
fname = get (handles.ListBox, 'String');
??? Evaluating Error while uicontrol Callback
function dilist
h1 = figure;
handles.ListBox = uicontrol ('Units', 'Normalized', 'Position', [0.01 0.1 0.1 0.15], ...
'Style', 'List', 'Callback', @ dilist_callback);
P = fileparts (mfilename ('fullpath'));
nfolder uigetdir = (P, 'whatever');
handles.dfolder = nfolder;
dfiles = dir (handles.dfolder);
dfiles dfiles = (3: end);
nfiles = length (dfiles);
nfiles if <1
disp ('no files availabel.')
return;
end
set (handles.ListBox, 'String', char (dfiles.name), 'value', 1);
s = [num2str (nfiles) 'files in:' handles.dfolder];
end
dilist_callback function (src, evt)
fname = get (handles.ListBox, 'String');
fname = fname (get (handles.ListBox, 'value'), :);
dicominfo info = ([handles.dfolder '\' fname]);
Y1 = dicomread (info);
imshow (Y1)
clims = [10 1800];
end
do not know where I made a mistake? Thank you very much.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Migrate GUIDE Apps에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by