我正在尝试显示一个对话框以打开多个文件,但似乎无法正常工作:
def loadFiles(self)
filter = "TXT (*.txt);;PDF (*.pdf)"
file_name = QtGui.QFileDialog()
file_name.setFileMode(QFileDialog.ExistingFiles)
names = file_name.getOpenFileNameAndFilter(self, "Open files", "C\\Desktop", filter)
print names
Run Code Online (Sandbox Code Playgroud)
我以为关键词是QFileDialog.ExistingFiles。
我在这里做错了什么?
我是QT的新手.目前在我的项目中我实施了QFileDialog.
在我的用例中:每当用户选择一个文本文件时,它就会执行functionA.但是,我发现如果单击fileDialog中的cancel,functionA仍会执行.
这是我的代码snipplet:
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
"/home",
tr("Text File (*.txt"));
// I want something like following :
if(QFileDialog.isOkButtonClicked)
{
// execute functionsA
}
Run Code Online (Sandbox Code Playgroud)
我查看了QFileDialog文档,没有类似的东西.有可能实现这个目标还是有其他解决方案?谢谢.
我一直在使用Summerfields关于使用Python和QT快速GUI编程的书... pyqt是精确的,但2007年的书使用版本4.something我试图使用当前版本5.4.2. .
我想弄清楚有一些变化,并希望得到一些如何找到东西的帮助.以下是文件保存对话框的示例 - 来自书籍:
fname = QFileDialog.getSaveFileName(self,
"Image Changer - Save Image", fname,
"Image files ({})".format(" ".join(formats)))
Run Code Online (Sandbox Code Playgroud)
这不起作用,可能主要是因为在pyqt5中QFileDialog返回一个元组而不是一个字符串.我能解决这个问题的唯一方法就是试错.pyqt5文档引用了QT,我真的不明白.
我得到以下工作:
fname = QFileDialog.getSaveFileName(self, 'some text',
"whatever.png", '*.png')
if "." not in fname[0]:
fname[0] += ".png"
self.addRecentFile(fname[0])
self.filename = fname[0]
return self.fileSave()
Run Code Online (Sandbox Code Playgroud)
哇,它的作品!但正是因为我正在努力,我才取得任何进展.我尝试运行python解释器并输入:
from PyQt5.QtWidgets import QFileDialog
help(QFileDialog)
Run Code Online (Sandbox Code Playgroud)
这是(有点)有用,但帮助的语法对我来说没有多大意义,我也看不出getSaveFileName应该返回什么.这有点乏味 - @ $$的东西.
我错过了什么?
这是我第一次尝试创建GUI.我创建了一个带有按钮的简单程序,该按钮应该打开文件浏览器并返回该文件.我知道PyQt5有一些内置的文件对话框命令,但它们对我不起作用.我试图使用https://pythonspot.com/en/pyqt5-file-dialog/上的教程.我还尝试了其他几种在线方法.我想不出它为什么不起作用的原因.
import sys, os
from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QInputDialog, QLineEdit, QFileDialog
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QIcon
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(1082, 800)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(Form)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setObjectName("pushButton")
self.horizontalLayout.addWidget(self.pushButton)
self.horizontalLayout_2.addLayout(self.horizontalLayout)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
self.pushButton.clicked.connect(self.openFile)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.pushButton.setText(_translate("Form", "PushButton"))
# FUNCTION BELOW NOT WORKING
def openFile(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fileName, _ = QFileDialog.getOpenFileName(self,"QFileDialog.getOpenFileName()", "","All Files (*);;Python …Run Code Online (Sandbox Code Playgroud) 关于pyQt4
我更喜欢在QFileDialog中对getSaveFilename使用静态方法,以便用户可以看到Windows/Mac本机对话框.
我的问题是,如果用户没有在保存文件名中键入文件扩展名(比如选择图像类型以保存文件),那么我没有办法检查文件的类型他们想保存为.
如何创建一个用过滤器保存文件的对话框,以及如何知道用户选择的过滤器?
例如:
files_types = "GML (*.gml);;Pickle (*.pickle);;YAML (*.yml)"
file = QtGui.QFileDialog.getSaveFileName(self, 'Save file', '', files_types)
Run Code Online (Sandbox Code Playgroud)
使用var文件我只有文件的路径,但我不确定用户选择的格式是什么.
所以,我想知道如何获得扩展或用户选择的文件类型.是否有使用此方法获取selectedFilter?
非常感谢!
我有一个QDialog打开一个QFileDialog,如下所示:
QFileDialog fd(this);
fd.setFileMode(QFileDialog::AnyFile);
if (fd.exec()) {
// save data to a file
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,默认行为似乎不是那么默认,如果我选择一个已经存在的文件,文件对话框不会提示我覆盖.呼叫setConfirmOverwrite(true)或setOption(QFileDialog::DontConfirmOverwrite, false)首先也没有帮助.我在Ubuntu 11.04和Windows XP上都在Qt 4.7.3和4.7.4上测试了这一点.
我环顾四周,发现了这个错误报告. QFileDialog::getSaveFileName()有这个问题,但它是特定于Maemo并在Qt 4.7.3出现之前修好.如果我在我的应用程序中使用该方法它工作得很好,我得到有关覆盖文件的提示.(我不想getSaveFileName()因为无关的原因而使用.)
我找不到任何抱怨这个不适合他们的人.我做错了什么,或者这是一个错误?我想这可能是因为对话框不知道它是否只是一个简单的Open对话框,其中提示没有意义,但我没有看到一种方法告诉它它是一个Save对话框(除了设置confirm-overwrite选项,哪个失败了),文档确实说它应该默认提示.
我正在尝试创建一个允许用户选择多个目录的 QFileDialog。
遵循此处的讨论和此处的常见问题解答,但我不确定我做错了什么。我得到一个文件对话框,但它仍然只允许我选择一个目录(文件夹)。
这是在 Windows 7 上
代码:
class FileDialog(QtGui.QFileDialog):
def __init__(self, *args):
QtGui.QFileDialog.__init__(self, *args)
self.setOption(self.DontUseNativeDialog, True)
self.setFileMode(self.DirectoryOnly)
self.tree = self.findChild(QtGui.QTreeView)
self.tree.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)
self.list = self.findChild(QtGui.QListView)
self.list.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
ex = FileDialog()
ex.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
编辑:
所以在玩了更多之后,如果我在文件对话框中选择“详细信息视图”,多选就可以了。但是,如果我选择“列表视图”,则它不起作用。知道为什么吗?
有没有办法直接浏览到使用QFileDialog的文件夹?
这意味着,不是在导航到目标文件夹时双击每个文件夹,只需在某处输入路径或使用Mac OS X上的Finder中的热键(Shift + Command + G).
谢谢!
编辑:(我的代码)
filter = "Wav File (*.wav)"
self._audio_file = QtGui.QFileDialog.getOpenFileName(self, "Audio File",
"/myfolder/folder", filter)
self._audio_file = str(self._audio_file)
Run Code Online (Sandbox Code Playgroud) 我在使用 QFileDialog 在 PyQt4 中保存带有扩展名的文件(获取文件路径和附加扩展名)时遇到问题。我的 Python 代码如下所示:
dialog = QtGui.QFileDialog()
dialog.setDefaultSuffix(".json")
file = dialog.getSaveFileName(None, "Title", "", "JSON (.json)")
Run Code Online (Sandbox Code Playgroud)
它有效,路径正确,对话框标题和过滤器在对话框窗口中,但第二行被忽略。文件没有任何扩展名。
如何默认添加扩展名?我究竟做错了什么?
我试图让 Qt5 QFileDialog 在选择打开图像时显示图像预览。
方法 1:扩展 QFileDialog
我使用了该对话框的实现,它与 Qt 5.6.1 一起使用。
现在我使用 Qt 5.9.2,它不再工作,给出以下错误:
Traceback (most recent call last):
File "main.py", line 74, in mouseDoubleClickEvent
self.openFileDialog()
File "main.py", line 123, in openFileDialog
openDialog = QFileDialogPreview(self, 'Open file', './', self.getDialogFilter())
File "QFileDialogPreview.py", line 22, in __init__
self.layout().addLayout(box, 1, 3, 1, 1)
TypeError: addLayout(self, QLayout, stretch: int = 0): too many arguments
Run Code Online (Sandbox Code Playgroud)
这是翻译后的类。我正在使用Python 3.5.2:
from PyQt5.QtWidgets import QFileDialog, QLabel, QVBoxLayout
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import Qt
class QFileDialogPreview(QFileDialog): …Run Code Online (Sandbox Code Playgroud) qfiledialog ×10
python ×8
pyqt ×6
qt ×5
pyqt5 ×3
pyqt4 ×2
qt4 ×2
qt-designer ×1
qtgui ×1
qtreeview ×1