比方说,我有这个文件夹,里面有一些.png文件:
我想拥有一个PyQt5应用程序,它将显示一个目录选择器对话框(因此,我想选择目录,而不是文件)-但是,我也想指定一个文件过滤器,这样当我选择一个给定目录,将显示与过滤器匹配的内部文件(显示为灰色,表示无法选择它们),并且未显示其他文件。
所以,这是我想出的一个简单示例-基于PyQt - QFileDialog - directly browse to a folder?中的讨论:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class Example(QWidget):
def __init__(self):
super(Example,self).__init__()
self.initUI()
def initUI(self):
self.layout = QGridLayout()
self.setLayout(self.layout)
self.btn_folder = QPushButton('Choose folder',self)
self.btn_folder.clicked.connect(self.on_btn_folder_click)
self.setGeometry(300,300,220,170)
self.setWindowTitle('Tester')
self.show()
@pyqtSlot()
def on_btn_folder_click(self):
dialog = QFileDialog(self,'Select Directory with .png files',"",filter="*.png")
dialog.setfileMode(QFileDialog.DirectoryOnly)
if dialog.exec_() == QDialog.accepted:
print(dialog.selectedFiles())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
运行此命令(Windows 10上的MINGW64 [MSYS2]下的Python 3.8.0)并单击按钮以启动目录选择器-并导航至与上述相同的文件夹,我得到:
...即,尽管我在代码中定义了文件过滤器,但目录选择器在文件夹内未显示任何文件(即使否则,文件夹中存在的所有文件实际上都应与过滤器匹配)。 / p>
那么有什么办法可以拥有一个PyQt5目录选择器-但是它将在目录中显示(灰色)与过滤器匹配的文件?