uipanels list box problems
Show older comments
sir,can I know why the list of images cannot be listing in my gui after built the coding?here is the code
window=figure( 'Units', 'pixel' ,...
'Position', [320,180,650,500] ,...
'Resize', 'on' ,...
'Color', [.7,.7,.7] ,...
'NumberTitle', 'off' ,...
'MenuBar', 'none' ,...
'Name', 'Pre-Processing Process');
headpanel = uipanel('Parent',window,'FontSize',15,...
'Title','Main', 'TitlePosition','lefttop',...
'BackgroundColor',[.8,.8,.8] ,...
'FontWeight','bold',...
'Position',[.22 0.14 .45 .65]);
leftpanel=uipanel('Parent',window,'BackgroundColor',[.8,.8,.8],...
'Position',[.04 .29 .15 .5]);
axes1= axes( 'Parent',headpanel,...
'Units','normalized', ...
'Position',[0.01 0.01 2 2]);
set(axes1, ...
'Visible', 'on', ...
'Units', 'pixels');
sButton = uicontrol(window,'String','Select Image Folder',...
'CallBack', 'folder=uigetdir(''C:\Users\s'',''Select Image Folder'');',...
'Position',[55 620 190 25]);
'if folder ~= 0,';...
% Assign the value if they didn't click cancel.
'handles.ImageFolder = folder;';...
'handles = LoadImageList(handles)';...
'guidata(hObject, handles)';...
'else';...
'msgbox(''No folder specified as input for function LoadImageList.'', ''select folder'',''modal'');';...
'end,';...
hDeplb = uicontrol(leftpanel,'Style','listbox','Units','normalized',...
'String',{'Select Image'},...
'Position',[.01 .0 1 1],'BackgroundColor','white','FontSize',9);
'varargout{1} = handles.output;';...
'handles.output= hObject;';...
'guidata(hObject, handles);';...
ListOfImageNames = {};
' folder = handles.ImageFolder';...
'if ~isempty(handles.ImageFolder) ';...
'if exist(folder,''dir'') == false';...
'msgbox([''Folder '' folder does not exist.''])';...
'end';
' else';
'msgbox(''No folder specified as input for function LoadImageList.'');';...
'end';
Answers (1)
Image Analyst
on 25 Aug 2012
1 vote
Probably because the syntax is just so totally mangled. You should really read the Getting started section of the help. You don't need to use ... at the end of every line. You only need to use it if you have a really long line of code - a single line of code - that you want to split over 2 or more lines for readability purposes. Second, your code looks like some kind of weird hybrid of GUIDE (because I can see the "handles" structure" and creating your own controls via code (uipanel, uicontrol, etc.) Plus a huge portion of the lines of code are enclosed within apostrophes for some unknown reason. Who told you to do that? I don't know what else to say except that you need to clean it up a lot. Watch Doug Hull's video tutorials - that might help.
17 Comments
Matt Fig
on 25 Aug 2012
I wonder if those are supposed to be callback strings?! But then why is there a varargout?? Confused....
I second IA's recommendation to go back to basics and read up on the documentation on GUI making.
Tulips
on 31 Aug 2012
Image Analyst
on 31 Aug 2012
Have you watched Doug Hull's videos on his blog?
Robert Cumming
on 31 Aug 2012
Tulips
on 15 Sep 2012
per isakson
on 15 Sep 2012
Maybe you should update the code in your question. I guess it is obsolete.
Image Analyst
on 15 Sep 2012
Have you tried sort()? Get the 'string' property of the listbox. Then call sort, then set the string property to send the sorted list back into the listbox. Something like (untested):
set(handles.listbox1, 'String', sort(get(handles.listbox1, 'String')));
Tulips
on 15 Sep 2012
Walter Roberson
on 15 Sep 2012
uigetdir() to allow the user to select the directory. dir() to get the contents of the directory. set() the String property of the listbox to the names of the files you found in the directory.
Tulips
on 16 Sep 2012
Image Analyst
on 16 Sep 2012
folder = uigetdir()
filenamesStructure = dir(folder)
baseFileNames = strvcat(filenamesStructure.name)
set(handleToListbox, 'String', baseFileNames);
You might be interested in this File Exchange submission: http://www.mathworks.com/matlabcentral/fileexchange/10867-uipickfiles-uigetfile-on-steroids
Walter Roberson
on 16 Sep 2012
You would usually assign the callback function at the time you create the listbox. Or are you talking about the callback for the button to 'select from directory' ?
Tulips
on 27 Sep 2012
Image Analyst
on 27 Sep 2012
You don't need to understand what uipickfiles does internally, just use it. I simply did
selectedFile = uipickfiles()
and it worked fine.
Image Analyst
on 1 Oct 2012
Inside your function LoadImageList(handles), you need to do something like
selectedFiles = uipickfiles()
set(handles.listbox, 'String', selectedFiles);
Tulips
on 2 Oct 2012
Categories
Find more on Image Arithmetic in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!