PyQt 展示获取本地文件,添加和查看,修改的示例

在这个示例中,我们将使用 PyQt5 创建一个简单的应用程序,用于获取本地文件,并提供添加、查看和修改文件的功能。

准备工作

首先,确保你已经安装了 PyQt5。

bash 复制代码
pip install PyQt5

示例代码

python 复制代码
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QFileDialog, QTextEdit
import sys

class FileApp(QWidget):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        layout = QVBoxLayout()

        self.text_edit = QTextEdit()
        layout.addWidget(self.text_edit)

        self.btn_open = QPushButton('打开文件')
        self.btn_open.clicked.connect(self.openFile)
        layout.addWidget(self.btn_open)

        self.btn_save = QPushButton('保存文件')
        self.btn_save.clicked.connect(self.saveFile)
        layout.addWidget(self.btn_save)

        self.setLayout(layout)

    def openFile(self):
        options = QFileDialog.Options()
        filePath, _ = QFileDialog.getOpenFileName(self, "打开文件", "", "Text Files (*.txt);;All Files (*)", options=options)
        if filePath:
            with open(filePath, 'r') as f:
                self.text_edit.setText(f.read())

    def saveFile(self):
        options = QFileDialog.Options()
        filePath, _ = QFileDialog.getSaveFileName(self, "保存文件", "", "Text Files (*.txt);;All Files (*)", options=options)
        if filePath:
            with open(filePath, 'w') as f:
                f.write(self.text_edit.toPlainText())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = FileApp()
    ex.show()
    sys.exit(app.exec_())

代码解释

  • 我们创建了一个 FileApp 类,继承自 QWidget
  • 在这个类中,我们定义了一个 QTextEdit 组件,用于显示和编辑文本。
  • 我们还添加了两个按钮:一个用于打开文件,另一个用于保存文件。
  • openFilesaveFile 方法分别用于打开和保存文件。我们使用 QFileDialog 来显示文件对话框。

运行示例

保存这段代码到一个 Python 文件(例如 file_app.py),然后运行这个文件。你应该会看到一个新窗口,其中包含一个文本编辑器和两个按钮。

  • 点击"打开文件"按钮,选择一个文本文件,其内容将显示在文本编辑器中。
  • 在文本编辑器中进行修改后,点击"保存文件"按钮,选择保存位置和文件名。

这样,你就成功地使用 PyQt 实现了一个简单的文件操作应用程序。你可以根据需要进一步定制这个应用程序。

相关推荐
星辰大海的精灵13 分钟前
SpringBoot与Quartz整合,实现订单自动取消功能
java·后端·算法
天天摸鱼的java工程师25 分钟前
RestTemplate 如何优化连接池?—— 八年 Java 开发的踩坑与优化指南
java·后端
一乐小哥26 分钟前
一口气同步10年豆瓣记录———豆瓣书影音同步 Notion分享 🚀
后端·python
LSTM9729 分钟前
如何使用C#实现Excel和CSV互转:基于Spire.XLS for .NET的专业指南
后端
三十_30 分钟前
【NestJS】构建可复用的数据存储模块 - 动态模块
前端·后端·nestjs
武子康32 分钟前
大数据-91 Spark广播变量:高效共享只读数据的最佳实践 RDD+Scala编程
大数据·后端·spark
努力的小郑32 分钟前
MySQL索引(二):覆盖索引、最左前缀原则与索引下推详解
后端·mysql
阿拉伦34 分钟前
智能交通拥堵治理柔性设计实践复盘小结
后端
用户40993225021235 分钟前
如何在 FastAPI 中优雅地模拟多模块集成测试?
后端·ai编程·trae
一枝花算不算浪漫35 分钟前
线上频繁FullGC?慌得一比!竟是Log4j2的这个“特性”坑了我
jvm·后端