我有一個Matlab的GUI(我編譯),爲了加載一個文件,我按如果我再次按下按鈕,使用該行集編譯MATLAB GUI文件夾
[file, folder] = uigetfile({'*.jpg;*.gif;*.bmp','All Image Files'},' Select image');
一個按鈕,它會打開該文件夾軟件的安裝位置。我怎樣才能改變它,它會記住並打開我使用的最後一個文件夾?
謝謝。
我有一個Matlab的GUI(我編譯),爲了加載一個文件,我按如果我再次按下按鈕,使用該行集編譯MATLAB GUI文件夾
[file, folder] = uigetfile({'*.jpg;*.gif;*.bmp','All Image Files'},' Select image');
一個按鈕,它會打開該文件夾軟件的安裝位置。我怎樣才能改變它,它會記住並打開我使用的最後一個文件夾?
謝謝。
每文檔爲uigetfile
,你可以指定一個可選的第三個輸入參數,DefaultName
:
[FileName,PathName,FilterIndex] = uigetfile(FilterSpec,DialogTitle,DefaultName)
displays a dialog box in which the file name specified byDefaultName
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 theDefaultName
argument. To specify a folder name, make the last character ofDefaultName
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
注意,這種方法重置到當前目錄時,GUI關閉並重新打開。
從uigetfile
輸出的folder
是選擇的路徑。使用此作爲輸入到下次調用uigetfile
[file, folder] = uigetfile({'*.jpg;*.gif;*.bmp','All Image Files';},...
'Select Image', folder);
這是doc uiputfile
一個例子,但它與uigetfile
工作爲好。
@ user2916044如果你想讓它在運行GUI的會話之間記住,那麼你需要「保存」它。當GUI打開時,「加載」它。 – Matt
感謝它很好,工作得很好。我如何將函數testgui的內容添加到我的OpeningFcn中? – user2916044
您只需在'OpeningFcn'中輸入'setappdata'。 – excaza
我得到這個錯誤:未定義變量「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