如果我通過方法Gtk.FileChooserWidget.set_current_folder()
設置當前文件夾中,我第一次打開文件選擇器,它會視作爲論據set_current_folder()
如何設置Gtk.FileChooserWidget的默認開放路徑?
的位置,但是,如果我選擇一個文件時,我再次打開文件選擇器,它會在「most_recent_used_files」上打開。
我想它會打開最後選定的文件的文件夾路徑。
怎麼辦?
謝謝。
如果我通過方法Gtk.FileChooserWidget.set_current_folder()
設置當前文件夾中,我第一次打開文件選擇器,它會視作爲論據set_current_folder()
如何設置Gtk.FileChooserWidget的默認開放路徑?
的位置,但是,如果我選擇一個文件時,我再次打開文件選擇器,它會在「most_recent_used_files」上打開。
我想它會打開最後選定的文件的文件夾路徑。
怎麼辦?
謝謝。
從文檔:
文件選擇的文檔的舊版本使用在各種情況下gtk_file_chooser_set_current_folder(),以讓應用程序的意圖提出一個合理的默認文件夾建議。這不再被認爲是一個好策略,因爲現在文件選擇器能夠自行提出好的建議。一般來說,只有當文件選擇器適合使用gtk_file_chooser_set_filename()時,才應使文件選擇器顯示特定的文件夾 - 即當您正在執行文件/另存爲命令並且您已將某個文件保存在某處時。
您可能會或可能不喜歡這種行爲的原因。如果您對它的出現感到好奇,請參閱郵件列表中的File chooser recent-files以及GNOME wiki上的Help the user choose a place to put a new file。
設置當前文件夾中,每次對我的作品,但它是一個有點棘手。我使用的是Gtk 3.14和Python 2.7。
你必須重置目錄之前得到的文件名,或者它丟失,並且當前目錄可能是無,所以你必須以檢查。
此代碼是Debian的傑西測試和Windows 7
import os.path as osp
from gi.repository import Gtk
class FileDialog(Gtk.FileChooserDialog):
def __init__(self, parent, title):
Gtk.FileChooserDialog.__init__(self, title, parent)
self.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL)
self.add_button(Gtk.STOCK_OPEN, Gtk.ResponseType.OK)
self.set_current_folder(osp.abspath('.'))
def __call__(self):
resp = self.run()
self.hide()
fname = self.get_filename()
d = self.get_current_folder()
if d:
self.set_current_folder(d)
if resp == Gtk.ResponseType.OK:
return fname
else:
return None
class TheApp(Gtk.Window):
def on_clicked(self, w, dlg):
fname = dlg()
print fname if fname else 'canceled'
def __init__(self):
Gtk.Window.__init__(self)
self.connect('delete_event', Gtk.main_quit)
self.set_resizable(False)
dlg = FileDialog(self, 'Your File Dialog, Sir.')
btn = Gtk.Button.new_with_label('click here')
btn.connect('clicked', self.on_clicked, dlg)
self.add(btn)
btn.show()
if __name__ == '__main__':
app = TheApp()
app.show()
Gtk.main()
如果你使用set_current_folder每次文件被打開? –
它不起作用。從這個角度來看,這個小部件有一個非常奇怪的行爲。也許這是一個錯誤。 – Irr