2017-08-03 115 views
0

我有一個Matlab的GUI(我編譯),爲了加載一個文件,我按如果我再次按下按鈕,使用該行集編譯MATLAB GUI文件夾

[file, folder] = uigetfile({'*.jpg;*.gif;*.bmp','All Image Files'},' Select image'); 

一個按鈕,它會打開該文件夾軟件的安裝位置。我怎樣才能改變它,它會記住並打開我使用的最後一個文件夾?

謝謝。

回答

2

每文檔爲uigetfile,你可以指定一個可選的第三個輸入參數,DefaultName

[FileName,PathName,FilterIndex] = uigetfile(FilterSpec,DialogTitle,DefaultName) displays a dialog box in which the file name specified by DefaultName appears in the File name field. DefaultName can also be a path or a path/filename. In this case, uigetfile opens the dialog box in the folder specified by the path. You can use . , .. , \ , or / in the DefaultName argument. To specify a folder name, make the last character of DefaultName either \ or / . If the specified path does not exist, uigetfile opens the dialog box in the current folder.

可以存儲最後打開的文件夾到你的圖形用戶界面和訪問它時,按鈕回調被觸發。

例如:

function testgui 
h.f = figure('MenuBar', 'none', 'NumberTitle', 'off', 'ToolBar', 'none'); 
h.b = uicontrol('Parent', h.f, 'Style', 'pushbutton', 'Units', 'Normalized', ... 
       'Position', [0.1 0.3 0.8 0.4], 'String', 'Pick a file'); 
h.l = uicontrol('Parent', h.f, 'Style', 'text', 'Units', 'Normalized', ... 
       'Position', [0.1 0.1 0.8 0.1], 'String', ''); 
setappdata(h.f, 'lastfolder', ''); 
h.l.String = sprintf('Last Directory: %s', ''); 

h.b.Callback = @(o, e) abutton(h); 
end 

function abutton(h) 
lastfolder = getappdata(h.f, 'lastfolder'); 
[file, folder] = uigetfile({'*.jpg;*.gif;*.bmp','All Image Files'},' Select image', lastfolder); 

if folder ~= 0 
    setappdata(h.f, 'lastfolder', folder); 
    h.l.String = sprintf('Last Directory: %s', folder); 
end  
end 

yay

注意,這種方法重置到當前目錄時,GUI關閉並重新打開。

+0

感謝它很好,工作得很好。我如何將函數testgui的內容添加到我的OpeningFcn中? – user2916044

+0

您只需在'OpeningFcn'中輸入'setappdata'。 – excaza

+0

我得到這個錯誤:未定義變量「h」或類「h.f」。 V1ba> V1ba_OpeningFcn(line 75)中的錯誤 setappdata(h.f,'lastfolder',''); gui_mainfcn錯誤(第220行) feval(gui_State.gui_OpeningFcn,gui_hFigure,[],guidata(gui_hFigure),varargin {:}); V1ba錯誤(第42行) gui_mainfcn(gui_State,varargin {:});我修復了什麼shell? – user2916044

0

uigetfile輸出的folder是選擇的路徑。使用此作爲輸入到下次調用uigetfile

[file, folder] = uigetfile({'*.jpg;*.gif;*.bmp','All Image Files';},... 
      'Select Image', folder); 

這是doc uiputfile一個例子,但它與uigetfile工作爲好。

+0

@ user2916044如果你想讓它在運行GUI的會話之間記住,那麼你需要「保存」它。當GUI打開時,「加載」它。 – Matt