hello,大家好,我是wangzirui32,今天我们来学习如何用PyQt5设计一个文本编辑器窗体,开始学习吧!

文章目录

  • 1. UI窗体设计
  • 2. 编写代码
    • 2.1 pyuic生成代码
    • 2.2 修改window.py
    • 2.3 主项目文件代码

1. UI窗体设计

首先,请确保你的Python解释器中已经安装了PyQt5和PyQt5-tools。
使用Designer的设计结果如下:

图片素材:

这里有几点需要说明,第一,文本框是由plainTextEdit控件实现的:


第二,工具栏是由Tool Button控件实现:


设置它的图标属性:(以打开按钮为例)

还有,每一个按钮对象的对象名(objectName)请设置为tool_图标文件名,如:tool_open, tool_save等。
最后,每一个工具栏按钮的说明是由Label控件实现,但是要将显示文件路径的Label控件的对象名设置为filepath。
UI及图片素材下载链接:https://download.csdn.net/download/wangzirui32/20347599

2. 编写代码

2.1 pyuic生成代码

在命令行中输入以下命令:(注意:要切换到ui文件所在的目录)

pyuic5 -o window.py Text_Edit.ui

可以看到,在目录下生成了window.py。

2.2 修改window.py

新增代码如下:

# -*- coding: utf-8 -*-from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox, QFileDialog
from os.path import isfile
import sysclass Ui_TextEdit(object):def setupUi(self, TextEdit):TextEdit.setObjectName("TextEdit")......QtCore.QMetaObject.connectSlotsByName(TextEdit)# 自定义设置self.open_filename = Noneself.log_content = []self.log_index = -1def retranslateUi(self, TextEdit):_translate = QtCore.QCoreApplication.translateTextEdit.setWindowTitle(_translate("TextEdit", "Python文本编辑器"))......# 自定义函数# 打开文件def open_file(self):self.open_filename = QtWidgets.QFileDialog.getOpenFileName(None, "打开", '', "文本文件 (*.txt)")[0]self.filepath.setText(QtCore.QCoreApplication.translate("TextEdit", "文件路径:{}".format(self.open_filename)))try:with open(self.open_filename, encoding="UTF-8") as f:self.file_content = f.read()# 设置控件文本self.plainTextEdit.setPlainText(self.file_content)except Exception:QMessageBox.warning(None, "警告", "打开文件发生错误,请稍后再试!")# 另存为def save_as_other_file(self):# 获取文件路径self.save_as_filename = QFileDialog.getSaveFileName(None, "另存为", '', '全部文件 (*.*)')[0]try:# 另存为其他文件with open(self.save_as_filename, "w", encoding="UTF-8") as f:f.write(self.plainTextEdit.toPlainText())except Exception:QMessageBox.warning(None, "警告", "另存为文件发生错误,请稍后再试!")else:QMessageBox.information(None, "提示", "另存为成功!")# 保存def save_file(self):try:with open(self.open_filename, "w", encoding="UTF-8") as f:# 将控件内容写入文件f.write(self.plainTextEdit.toPlainText())except Exception:QMessageBox.warning(None, "警告", "保存文件发生错误,请稍后再试!")else:QMessageBox.information(None, "提示", "保存成功!")    # 为记录列表添加一条记录        if len(self.log_content) == 5:# 最多记录5条del self.log_content[0]self.log_content.append(self.plainTextEdit.toPlainText())# 清空def clear_content(self):if QMessageBox.warning(None,"警告","您确定这样做吗?",QMessageBox.Yes | QMessageBox.No) == QMessageBox.Yes:self.plainTextEdit.setPlainText("")# 撤销def recover_content(self):try:# 如果日志超出了列表范围if (self.log_index - 1) < -5:raise Exceptionself.log_index -= 1self.plainTextEdit.setPlainText(self.log_content[self.log_index])except Exception:QMessageBox.warning(None, "警告", "撤销文件发生错误,请稍后再试!")else:QMessageBox.information(None, "提示", "撤销成功!")# 恢复def unmake_content(self):try:# 如果日志超出了列表范围if (self.log_index + 1) >= 0:raise Exceptionself.log_index += 1self.plainTextEdit.setPlainText(self.log_content[self.log_index])except Exception:QMessageBox.warning(None, "警告", "恢复文件发生错误,请稍后再试!")else:QMessageBox.information(None, "提示", "恢复成功!")# 退出def exit_window(self):if QMessageBox.information(None,"提示","您确定退出吗?",QMessageBox.Yes | QMessageBox.No) == QMessageBox.Yes:sys.exit()

2.3 主项目文件代码

请务必将window.py放入主项目代码所处的文件夹中:

import sys
from PyQt5 import QtWidgets
from window import Ui_TextEdit# 加载窗体
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QMainWindow()
ui = Ui_TextEdit()
ui.setupUi(window)# 加载按钮事件
ui.tool_open.clicked.connect(ui.open_file)
ui.tool_save.clicked.connect(ui.save_file)
ui.tool_clear.clicked.connect(ui.clear_content)
ui.tool_exit.clicked.connect(ui.exit_window)
ui.tool_save_as.clicked.connect(ui.save_as_other_file)
ui.tool_recover.clicked.connect(ui.recover_content)
ui.tool_unmake.clicked.connect(ui.unmake_content)window.show()
sys.exit(app.exec_())

运行代码,就可以看到项目成果了。


好了,今天的课程就到这里,我是wangzirui32,喜欢的可以点个收藏和关注,我们下次再见!

Python:PyQt5设计一个文本编辑器窗体程序(附UI窗体和图片素材下载)相关推荐

  1. LeetCode 2296. 设计一个文本编辑器(双栈)

    文章目录 1. 题目 2. 解题 1. 题目 请你设计一个带光标的文本编辑器,它可以实现以下功能: 添加:在光标所在处添加文本. 删除:在光标所在处删除文本(模拟键盘的删除键). 移动:将光标往左或者 ...

  2. Linuxqt制作文本编辑器_Python实操!速收藏!学习使用Python创建文本编辑器应用程序

    朋友们,大家好,这次再次与作者见面,作者将发表一篇文章,介绍如何使用Python Tkinter创建文本编辑器.Tkinter是一个Python库,在您想要创建应用程序时非常有用. 立即讨论如何制作此 ...

  3. python-GUI:利用pyqt5设计一个bootloader上位机页面(ZLG驱动)及打包报错faild to execute script pyi_rth_multiprocessing精简方案

    python-GUI:利用pyqt5设计一个bootloader上位机页面 1.下载pyqt5和Qt Designer 2.利用Qt Designer设计页面 步骤一:打开Qt Designer 步骤 ...

  4. c语言课程设计文本编辑器实验报告6,C课程设计简易文本编辑器.doc

    C课程设计简易文本编辑器 目录 第一章 课程设计目的和要求1 1.1课程设计的目1 1.2 基本要求1 第二章 课程设计任务内容2 2.1 设计背景2 2.2简易文本编辑器设计内容2 第三章 详细设计 ...

  5. 用VB制作简单加法计算机,用VB设计一个简单的加法程序

    计算机的多媒体技术已经广泛普及, 对于一般的用户来说, 采用可视化编程工具是的选择, VB程序设计语言就是其中一个典型的代表.Visual Basic是Microsoft Windows的编程语言.V ...

  6. JAVA同时输入用户名和密码_用java模拟设计一个简单的“用户注册”程序。当用户输入用户名和密码时,单击“注...

    用java模拟设计一个简单的"用户注册"程序.当用户输入用户名和密码时,单击"注 2020 - 9 - 26 TAG : 所有功能均已实现,如有不满意的地方我再修改imp ...

  7. 编写用switch语句编程设计一个简单的计算器程序

    编程要求 根据提示,在右侧编辑器补充代码.要求用switch语句编程设计一个简单的计算器程序.要求根据用户从键盘输入的表达式. 操作数1 运算符op 操作数2 计算表达式的值.指定的算术运算符为加(+ ...

  8. 1.设计一个敏感词过滤程序

    1.设计一个敏感词过滤程序 WordFilter类 属性:数组类型[]存放敏感词 设计一个方法,调用这个方法(传参,可能会包含敏感词的字符串),返回过滤后的新的字符串public static Str ...

  9. .设计一个敏感词过滤程序

    1.设计一个敏感词过滤程序     WordFilter类         属性:数组类型[]存放敏感词 设计一个方法,调用这个方法(传参,可能会包含敏感词的字符串),返回过滤后的新的字符串      ...

最新文章

  1. C++11中std::initializer_list的使用
  2. 【问链-EOS公开课】第八课 EOS 数据库与持久化 API(一)
  3. flume案例-网络数据采集-启动flume
  4. The writeAsCsv() method can only be used on data sets of tuples.
  5. letecode [204] - Count Primes
  6. svn update中文报错_svn不能更新也不能提交!为什么?
  7. c语言实现赫夫曼信源编码,哈夫曼信源编码c语言程序代码.doc
  8. 短时傅里叶变换原理解
  9. win10开发环境搭建之wsl2(Ubuntu)+Terminal+docker
  10. SAP MM ME21N 创建PO时报错 - Net price in CNY becomes too large –
  11. Arduino NBIoT使用方法一
  12. 二分匹配Hopcroft-Carp算法
  13. 人工智能(AI)和机器学习——未来的发展趋势
  14. 从面试官的角度谈谈后端面试
  15. The Sultan's Successors UVA - 167
  16. 汇编实现数字的输入与输出
  17. NRDP要比NSCA更好使用
  18. Linux内核网络学习
  19. AI初学者必看的4个顶级人工智能领域岗位
  20. 测试液晶显示器的软件,tLCDtest(液晶屏幕测试软件)

热门文章

  1. 纯水属于酸性水数据标准
  2. Python -- 把python文件打包成windows系统的exe文件
  3. 伊春职业学院计算机应用技术学院,计算机应用技术学院“创建无烟校园”活动方案...
  4. 生态伙伴 | 简约费控入驻飞书啦!帮助企业将费用管理化繁为简
  5. 联想拯救者 Y900 平板电脑 评测 联想拯救者 Y900 参数配置
  6. 怎么转换图片的格式?分享几种好用的图片格式转换方法
  7. android点击软键盘外面的区域关闭软键盘解决办法
  8. 简单工厂 工厂方法 抽象工厂 了解一下
  9. 番禺好去处,ZBOX沉浸式体验馆
  10. 如何编辑图片?几个图片编辑的简单方法