Yar*_*nGh 3 python qt pyqt qfiledialog
有没有办法直接浏览到使用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
。
from PyQt5.QtWidgets import QFileDialog, QDialog
from definitions import ROOT_DIR
from PyQt5 import QtCore
def FileDialog(directory='', forOpen=True, fmt='', isFolder=False):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
options |= QFileDialog.DontUseCustomDirectoryIcons
dialog = QFileDialog()
dialog.setOptions(options)
dialog.setFilter(dialog.filter() | QtCore.QDir.Hidden)
# ARE WE TALKING ABOUT FILES OR FOLDERS
if isFolder:
dialog.setFileMode(QFileDialog.DirectoryOnly)
else:
dialog.setFileMode(QFileDialog.AnyFile)
# OPENING OR SAVING
dialog.setAcceptMode(QFileDialog.AcceptOpen) if forOpen else dialog.setAcceptMode(QFileDialog.AcceptSave)
# SET FORMAT, IF SPECIFIED
if fmt != '' and isFolder is False:
dialog.setDefaultSuffix(fmt)
dialog.setNameFilters([f'{fmt} (*.{fmt})'])
# SET THE STARTING DIRECTORY
if directory != '':
dialog.setDirectory(str(directory))
else:
dialog.setDirectory(str(ROOT_DIR))
if dialog.exec_() == QDialog.Accepted:
path = dialog.selectedFiles()[0] # returns a list
return path
else:
return ''
Run Code Online (Sandbox Code Playgroud)
如果使用静态QFileDialog
函数,则会获得本机文件对话框,因此您将受限于平台提供的功能.您可以查阅适用于您的平台的文档,以了解您所需的功能是否可用.
如果它不可用,你将不得不接受Qt的内置文件对话框,并添加自己的功能.对于您的特定用例,这应该很简单,因为内置对话框似乎已经拥有您想要的内容.它有一个侧栏,显示用户可以直接导航到的"位置"列表.您可以像这样设置自己的地方:
dialog = QtGui.QFileDialog(self, 'Audio Files', directory, filter)
dialog.setFileMode(QtGui.QFileDialog.DirectoryOnly)
dialog.setSidebarUrls([QtCore.QUrl.fromLocalFile(place)])
if dialog.exec_() == QtGui.QDialog.Accepted:
self._audio_file = dialog.selectedFiles()[0]
Run Code Online (Sandbox Code Playgroud)
小智 5
改用getExistingDirectory
方法:
from PyQt5.QtWidgets import QFileDialog
dialog = QFileDialog()
foo_dir = dialog.getExistingDirectory(self, 'Select an awesome directory')
print(foo_dir)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19532 次 |
最近记录: |