QFileDialog查看文件夹和文件,但只选择文件夹?

2024-05-08 13:10:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用以下代码创建我自己的自定义文件对话框:

file_dialog = QtGui.QFileDialog()
file_dialog.setFileMode(QtGui.QFileDialog.Directory)
file_dialog.setViewMode(QtGui.QFileDialog.Detail)
file_dialog.setOption(QtGui.QFileDialog.DontUseNativeDialog, True)

我感兴趣的行为是用户能够同时查看文件和文件夹,但只选择文件夹。(使文件不可选择)。有可能吗?在

注意: 使用DirectoryOnly选项对我不好,因为它不允许您查看文件,只允许查看文件夹。在

编辑(我忘记添加的额外代码,它负责选择多个文件夹而不是一个文件夹):

^{pr2}$

Tags: 文件代码文件夹truedirectoryfiledialog对话框
1条回答
网友
1楼 · 发布于 2024-05-08 13:10:08

若要防止选择文件,可以安装代理模型,该模型可操纵文件视图中项目的标志:

dialog = QFileDialog()
dialog.setFileMode(QFileDialog.Directory)
dialog.setOption(QFileDialog.DontUseNativeDialog, True)

class ProxyModel(QIdentityProxyModel):
    def flags(self, index):
        flags = super(ProxyModel, self).flags(index)
        if not self.sourceModel().isDir(index):
            flags &= ~Qt.ItemIsSelectable
            # or disable all files
            # flags &= ~Qt.ItemIsEnabled
        return flags

proxy = ProxyModel(dialog)
dialog.setProxyModel(proxy)

dialog.exec()

相关问题 更多 >