跳至正文
View Categories

< 1 min read

    主要内容 #

  1. 打开并展示文本文件

完成效果 #

本节课程是字数统计小程序的第一节,完成本节课程,实现读取文本文件,然后将文本展示在应用程序上,并添加一个分析按钮。

收获 #

学习完本节内容,我们会进行PyQt5实践,灵活组合运用QTextEdit,QPushButton,BoxLayout,QFileDialog等控件。

1.打开并展示文本文件 #

本例中,事先在文件夹中创建好了example2.txt文件,里面内容是古诗《春江花月夜》,弹出打开文件对话框后选择example2.txt即可将文件内容展示在文本编辑框中。以下就是打开并展示文本文件的代码:

from PyQt5.QtWidgets import QWidget, QTextEdit, QVBoxLayout, QFileDialog, QHeaderView, QApplication, QPushButton, QTableView
from PyQt5.QtGui import QStandardItemModel, QStandardItem
import sys, csv

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        button = QPushButton('分析')  # 添加一个按钮
        textEdit = QTextEdit()  # 创建一个多行文本编辑框
        self.layout = QVBoxLayout()  # 创建一个垂直盒布局
        self.layout.addWidget(button)  # 将按钮添加到布局中
        self.layout.addWidget(textEdit)  # 将文本编辑框添加到文本中
        self.setLayout(self.layout)  # 将布局应用到程序窗口
        # 显示打开文件对话框
        # 参数'D:\\Python_Tips\\Dashima\\pics'指定路径
        # 参数'Text Files (*.txt)'指定只显示txt文件
        filename, filetype = QFileDialog.getOpenFileName(self, '打开文件', 'D:\\Python_Tips\\Dashima\\pics', 'Text Files (*.txt)')
        if filename:  # 如果文件名不为空,即选择了一个文件
            # 则打开并读取名为filename的文件内容,encoding='utf-8 可以兼容中文
            with open(filename, 'r', encoding='utf-8') as data:  # 则打开并读取名为filename的文件内容,encoding='utf-8 可以兼容中文
                self.content = data.read()  # read方法可以读取txt文档的所有内容
        textEdit.setText(self.content)  # 把文档内容显示在文本框中
        self.setGeometry(300, 300, 500, 800)
        self.setWindowTitle('字数统计小程序')
        self.show()

app = QApplication(sys.argv)  # 创建应用程序
ex = Example()  # 创建窗口对象
sys.exit(app.exec_())  # 设置关闭窗口后结束进程

拓展练习:尝试更换按钮和文本编辑框的位置。

小结 #

  • 学习了如何在垂直盒布局中添加控件。
  • 学习了如何打开文本文件并在程序窗口展示内容。
  • 习题 #

    1. 习题1:尝试将使用水平盒布局,自定义各个控件的位置。
    2. 习题2:尝试将自定义一个英文内容的txt文件,打开并展示。