美文网首页
PySide2学习记录(九):文件对话框

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

作者: 3ni | 来源:发表于2018-11-27 09:11 被阅读0次

    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学习记录(九):文件对话框

          本文链接:https://www.haomeiwen.com/subject/jtidqqtx.html