Setting the current folder each time works for me, but it is a little tricky. I'm using Gtk 3.14 and Python 2.7.
You have to get the filename before resetting the directory, or it's lost, and the current directory may be None, so you have to check for that.
This code is tested on Debian jessie and 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()