PySide2学习记录(九):文件对话框

Python版本3.7
PySide2 Version: 5.14.1
官方文档:http://doc.qt.io/qtforpython/index.html

from PySide2.QtWidgets import QWidget, QPushButton, QVBoxLayout, QFileDialog, QApplication, QLineEdit
from PySide2.QtCore import Signal, Slot

class MyWidget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)

        self.btn_dialog = QPushButton('打开文件')
        self.btn_dialog.clicked.connect(self.openFileDialog)
        self.line_edit = QLineEdit()

        self.layout = QVBoxLayout()
        self.layout.addWidget(self.btn_dialog)
        self.layout.addWidget(self.line_edit)
        self.setLayout(self.layout)

    @Slot()
    def openFileDialog(self):
        # 生成文件对话框对象
        dialog = QFileDialog()
        # 设置文件过滤器,这里是任何文件,包括目录噢
        dialog.setFileMode(QFileDialog.AnyFile)
        # 设置显示文件的模式,这里是详细模式
        dialog.setViewMode(QFileDialog.Detail)
        if dialog.exec_():
            fileNames = dialog.selectedFiles()
            self.line_edit.setText(fileNames[0])


app = QApplication()
widget = MyWidget()
widget.show()
app.exec_()

运行截图:

图1

在Mac系统下,打开文件的时候,可能会出现如下报错信息:

objc[17245]: Class FIFinderSyncExtensionHost is implemented in both /System/Library/PrivateFrameworks/FinderKit.framework/Versions/A/FinderKit (0x7fff9a23b3c8) and /System/Library/PrivateFrameworks/FileProvider.framework/OverrideBundles/FinderSyncCollaborationFileProviderOverride.bundle/Contents/MacOS/FinderSyncCollaborationFileProviderOverride (0x132cfbf50). One of the two will be used. Which one is undefined.

我从网上搜索得知,出现红色的报错好像是苹果系统的锅。嗯,暂时就这样认为吧。

代码分析:
dialog = QFileDialog()
生成一个文件对话框对象, 当然也可以通过QFileDialog类的静态方法来直接显示一个文件对话框,具体查看官方手册。
dialog.setFileMode(QFileDialog.AnyFile)
设置文件打开的模式,这里设置为任何文件,包括目录,但是一次只能选择一个文件,如果想选择多个文件,就要设置为QFileDialog.ExistingFiles,如果只想让用户选择目录,不能选择文件就设置为QFileDialog.Directory
dialog.setViewMode(QFileDialog.Detail)
设置显示的模式,这里是详细模式,包括图像,名字和每一项的详细信息,也可以设置QFileDialog.List,这里就只包括图像和名字了

if dialog.exec_():
    fileNames = dialog.selectedFiles()
    self.line_edit.setText(fileNames[0])

当对话框关闭后,获取用户选择的文件和路径,并显示在line_edit控件上面
dialog.selectedFiles()会返回一个列表,里面包含了用户选择的文件的绝对路径。

友情链接:
QFileDialog
QLineEdit

你可能感兴趣的:(PySide2学习记录(九):文件对话框)