美文网首页
PyQt5 QFileDialog(文件目录对话框)学习

PyQt5 QFileDialog(文件目录对话框)学习

作者: _Mirage | 来源:发表于2020-04-04 07:47 被阅读0次

QFileDialog is a dialog that allows users to select files or directories. The files can be selected for both opening and saving.
这个大概类似我们每次在GUI窗体中要选择下载目录时跳出的选界面。

代码:

# coding='utf-8'

from PyQt5.QtWidgets import QMainWindow, QApplication,\
    QFileDialog, QTextEdit, QAction
import sys
from PyQt5.QtGui import QIcon


class Gui(QMainWindow):
    def __init__(self):
        super().__init__()
        self.start()

    def start(self):
        # 创建一个多行文本编辑器
        self.text_edit = QTextEdit()
        # 使刚刚创建的多行文本编辑器占据QMainWindow(主窗体)\
        #    所有可以占据的空间
        self.setCentralWidget(self.text_edit)
        # 利用QMainWindow创建左下角的状态栏,初始没设置消息的话是空
        self.statusBar()

        # 创建一个QAction事件,QAction事件通常用来和menubar,\
        # toolbar, statusbar等相关联
        open_file = QAction(QIcon('./图片素材/打开文件/24.png'),
                            '选择文件', self)
        open_file.setShortcut('Ctrl+O')
        open_file.setStatusTip('打开新文件')
        open_file.triggered.connect(self.show_dialog)

        # 创建第一个菜单:名字是'文件'
        file = self.menuBar().addMenu('文件')
        # 给刚刚创建的名字是'文件'的菜单添加QAction事件
        file.addAction(open_file)

        self.setGeometry(300, 300, 350, 300)
        self.setWindowTitle('文件对话框')
        self.show()

    def show_dialog(self):
        # 构造函数:getOpenFileName(
        #       parent: QWidget = None,\
        #       caption: str = '',\
        #       directory: str = '',\
        #       filter: str = '',\
        #       initialFilter: str = '',\
        #       options: Union[QFileDialog.Options,\
        #       QFileDialog.Option] = 0)\
        #       返回值 -> Tuple[str, str] """
        # 这里注意directory参数的意思是初始的默认的打开目录
        fname = QFileDialog.getOpenFileName(self, '打开文件', './')
        # fname[0]是用户选择的文件的绝对路径(我们需要的),\
        # fname[1]是'All Files (*)'这个字符串(表示我们设置的参数filter)
        # 如果用户任何文件都不选择,返回: ('', '')
        if fname[0]:
            # 用读文本的形式创建文件对象f
            # 这里注意打开文件的话,如果文件内容包含了中文,\
            # 那么必须要手动设置encoding等于要打开的文件编码\
            # 如果使纯英文的那么没必要加上encoding
            f = open(fname[0], 'r', encoding='utf-8')
            # with 语句文件会自动关闭
            with f:
                data = f.read()
                # 将从文件读取到的文本放置到text_edit中去
                self.text_edit.setText(data)


app = QApplication(sys.argv)
gui = Gui()
sys.exit(app.exec_())

运行结果: image.png
image.png image.png

相关文章

网友评论

      本文标题:PyQt5 QFileDialog(文件目录对话框)学习

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