调用QtGui.QFileDialog.getExistingDirectory时出错 [英] error when calling QtGui.QFileDialog.getExistingDirectory

查看:781
本文介绍了调用QtGui.QFileDialog.getExistingDirectory时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在pyqt代码中,我试图向用户升级对话框,并让用户选择文件夹.看来QtGui.QFileDialog.getExistingDirectory方法应该能够做到这一点.问题是代码运行后会出现一些错误消息.

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.

发生了什么事?

示例如下:

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_()

推荐答案

我无法在我的系统上重现此内容.

I cannot reproduce this on my system.

快速的Google搜索返回 Qt.DontUseNativeDialog 选项的本机文件对话框来避免这种情况创建对话框时.

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.

这篇关于调用QtGui.QFileDialog.getExistingDirectory时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆