Creating a file input dialog

The best way to get a filename from the user is to have them browse to the file using a dialog. You can have the user type in a filename using the text input dialog, but this method is prone to errors. In this recipe, we'll create a file dialog and print the chosen filename to the console.

Getting ready

Open the QGIS Python Console by selecting the Plugins menu and then clicking on Python Console.

How to do it...

In this recipe, we will create and configure the dialog, browse to a file, and print the chosen filename, as follows:

  1. First, we import the GUI library:
    from PyQt4.QtGui import *
    
  2. Next, we initialize the file dialog and specify its window title:
    qfd = QFileDialog()
    title = 'Open File'
    
  3. Now, we specify a path to the directory we want the file dialog to start in:
    path = "/Users/joellawhead/qgis_data"
    
  4. Then, we configure the file dialog with the preceding parameters and assign the output to a variable:
    f = QFileDialog.getOpenFileName(qfd, title, path)
    
  5. When the dialog appears, browse to a file, select it, and click on the OK button.
  6. Finally, we print the chosen filename to the console:
    print f
    

How it works...

The file dialog simply provides a filename. After the user selects the file, you must open it or perform some other operation on it. If the user cancels the file dialog, the file variable is just an empty string. You can use the QFileInfo object to get the path of the selected file:

from PyQt4.QtCore import *path = QFileInfo(f).path()

Then, you can save this path in the project settings, as demonstrated in Chapter 1, Automating QGIS. This way, next time when you open a file dialog, you will start in the same directory location as the previous file, which is usually more convenient.

There's more…

You can also use the QFileDialog() method to get the filenames to be saved. You can use the FileMode enumeration to restrict the user to selecting directories as well.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset