Santiago_Pineda | 2020-06-04 12:29:36 UTC | #1
I have a GUI with a field for file name ( self.ui.lineEditFileName) and I need that the file name goes automatically to the file name field in the QFileDialog and set it to always open in D:\Data. However I want to be able to get to the last directory location where the last file was saved.
If i remove the 3rd argument of the function this exactly what happens but then i lose the file name signal and the field is blank.
Thanks for any help.
fileName, _ = QFileDialog.getSaveFileName(self, "Save Measurement", 'D:\Data\' + self.ui.lineEditFileName.text(), "(*.csv)", options=options)
martin | 2020-06-04 20:59:10 UTC | #2
Hey @Santiago_Pineda welcome to the forum! [quote="Santiago_Pineda, post:1, topic:246"] Get it to always open in D:\Data. However I want to be able to get to the last directory location where the last file was saved. [/quote]
Create GUI Applications with Python & Qt5 by Martin Fitzpatrick — (PyQt5 Edition) The hands-on guide to making apps with Python — Over 10,000 copies sold!
Do you mean that instead of going to D:\Data
you want it to open at the last folder (if there is one)?
In that case what I would do is save the folder of the previous filename, e.g.
self.active_folder = os.path.dirname(fileName)
You can set self.active_folder = 'D:\Data\'
by default if you like (or set it to None
and check for this, defaulting to not passing anything in).
To use this you would then do --
path = os.path.join(self.active_folder, self.ui.lineEditFileName.text())
fileName, _ = QFileDialog.getSaveFileName(self, “Save Measurement”, path, “(*.csv)”, options=options)
Does that make sense? Let me know if I've misunderstood!
Santiago_Pineda | 2020-06-05 14:15:31 UTC | #3
Thanks for the reply. This is exactly what i meant. What was confusing is that if you replace the 3rd argument of the getSaveFileName method for the empty string "", then the dialog will remember the last directory every time I save, but of course i would lose the file name from my GUI lineEditFileName field. This is how it is working as I intended after your feedback:
In the init function (Note that the \ has to be escaped, otherwise it includes the directory path as part of the file name):
self.active_folder = 'D:\\Data\\'
In the save function:
path = os.path.join(self.active_folder, self.ui.lineEditFileName.text())
fileName, _ = QFileDialog.getSaveFileName(self, "Save Measurement", path, "(*.csv)", options=options)
self.active_folder = os.path.dirname(fileName)
Thanks again Martin