Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使QFileDialog.AnyFile工作?_Python_Pyqt_Pyqt5_Qfiledialog - Fatal编程技术网

Python 如何使QFileDialog.AnyFile工作?

Python 如何使QFileDialog.AnyFile工作?,python,pyqt,pyqt5,qfiledialog,Python,Pyqt,Pyqt5,Qfiledialog,根据PyQt5文档,指定QFileDialog.AnyFile应消除指定文件已经存在的要求。但是,这似乎不起作用。我是做错了什么,还是这是一个不再有效的功能?这是我的密码: import os from PyQt5 import QtGui, QtCore from PyQt5.QtWidgets import QApplication, QFileDialog, QWidget class App(QWidget): def __init__(self): sup

根据PyQt5文档,指定
QFileDialog.AnyFile
应消除指定文件已经存在的要求。但是,这似乎不起作用。我是做错了什么,还是这是一个不再有效的功能?这是我的密码:

import os

from PyQt5 import QtGui, QtCore
from PyQt5.QtWidgets import QApplication, QFileDialog, QWidget


class App(QWidget):
    def __init__(self):
        super().__init__()
        self.title = "QFileDialog.AnyFile doesn't work."
        self.left = 10
        self.top = 30
        self.width = 320
        self.height = 200

        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        dlg= QFileDialog()
        dlg.setFileMode(QFileDialog.AnyFile)
        fname, _= dlg.getOpenFileName(parent=self, directory=os.getcwd(),
          caption='Select a file')
        self.show()


if __name__ == '__main__':
   import sys

   app = QApplication(sys.argv)
   ex = App()

   sys.exit(app.exec_())

你有以下误解:

  • QFileDialog::getOpenFileName()
    是一种静态方法,它不使用“dlg”对象,而是创建一个新的QFileDialog,因此设置或修改任何“dlg”属性都不会影响将显示的QFileDialog

  • 函数QFileDialog::getOpenFileName()的目的是获取现有文件的名称,如中所示,它设置的文件模式是
    QFileDialog::ExistingFile
    ,因此修改该行为是矛盾的

这是一个方便的静态函数,返回用户选择的现有文件。如果用户按Cancel,则返回空字符串

(强调矿山)


因此,如果要获取文件名,即使该文件不存在,也必须使用静态方法QFileDialog::getSaveFileName(),如中所示:

这是一个方便的静态函数,将返回用户选择的文件名文件不必存在

(强调矿山)

fname,QFileDialog.getSaveFileName(
parent=self,directory=os.getcwd(),caption=“选择文件”
)