0

In a pyqt code, I am trying to promote a dialog to the user and let the user to select a folder. It seems QtGui.QFileDialog.getExistingDirectory method should be able to do that. The problem is there are a couple of error messages after the code is ran.

D_Lib: debug printing for files [.*] and level [100] is turned on
D_Lib: debug printing for files [.*] and level [200] is turned on
D_Lib: debug printing for files [.*] and level [300] is turned on
11148:vf_shex.cpp(84): INFO: DllCanUnloadNow returned S_OK.

What has happened?

A example would look like this:

import sys
from PyQt4 import QtGui, QtCore

class FilePicker(QtGui.QWidget):
    """
    An example file picker application
    """

    def __init__(self):
        # create GUI
        QtGui.QMainWindow.__init__(self)
        self.setWindowTitle('File picker')
        # Set the window dimensions
        self.resize(300,75)

        # vertical layout for widgets
        self.vbox = QtGui.QVBoxLayout()
        self.setLayout(self.vbox)

        # Create a label which displays the path to our chosen file
        self.lbl = QtGui.QLabel('No file selected')
        self.vbox.addWidget(self.lbl)

        # Create a push button labelled 'choose' and add it to our layout
        btn = QtGui.QPushButton('Choose file', self)
        self.vbox.addWidget(btn)

        # Connect the clicked signal to the get_fname handler
        self.connect(btn, QtCore.SIGNAL('clicked()'), self.get_fname)

    def get_fname(self):
        """
        Handler called when 'choose file' is clicked
        """
        # When you call getOpenFileName, a file picker dialog is created
        # and if the user selects a file, it's path is returned, and if not
        # (ie, the user cancels the operation) None is returned
        try:
            fname = QtGui.QFileDialog.getOpenFileName(self, 'Select file')
        except:
            pass
        if fname:
            self.lbl.setText(fname)
        else:
            self.lbl.setText('No file selected')


# If the program is run directly or passed as an argument to the python
# interpreter then create a FilePicker instance and show it
if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    gui = FilePicker()
    gui.show()
    app.exec_()
three_pineapples
  • 10,414
  • 4
  • 35
  • 64
Bo Qiang
  • 559
  • 1
  • 8
  • 27

1 Answers1

0

I cannot reproduce this on my system.

A quick google search returns this result which indicates that the message is caused by a "Viewfinity" product being installed on the system, and is not an issue with PyQt. It seems that this product has modified the native system file dialog. You could avoid it by either uninstalling the product, or asking Qt to not use the native file dialog with the Qt.DontUseNativeDialog option when you create the dialog.

Community
  • 1
  • 1
three_pineapples
  • 10,414
  • 4
  • 35
  • 64
  • Thanks! That is exactly what happened. – Bo Qiang Aug 18 '15 at 02:55
  • Just find another problem: now even the cancel button is pressed, the file name is still returned. – Bo Qiang Aug 18 '15 at 04:18
  • @BoQiang Please ask a separate question rather than updating your original post. That way this question/answer may be of use to someone else in the future. I've reverted the latest edit to your question to reflect this. – three_pineapples Aug 18 '15 at 06:24