Python:PyQt5设计一个文本编辑器窗体程序(附UI窗体和图片素材下载)
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窗体和图片素材下载)相关推荐
- LeetCode 2296. 设计一个文本编辑器(双栈)
文章目录 1. 题目 2. 解题 1. 题目 请你设计一个带光标的文本编辑器,它可以实现以下功能: 添加:在光标所在处添加文本. 删除:在光标所在处删除文本(模拟键盘的删除键). 移动:将光标往左或者 ...
- Linuxqt制作文本编辑器_Python实操!速收藏!学习使用Python创建文本编辑器应用程序
朋友们,大家好,这次再次与作者见面,作者将发表一篇文章,介绍如何使用Python Tkinter创建文本编辑器.Tkinter是一个Python库,在您想要创建应用程序时非常有用. 立即讨论如何制作此 ...
- 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 步骤 ...
- c语言课程设计文本编辑器实验报告6,C课程设计简易文本编辑器.doc
C课程设计简易文本编辑器 目录 第一章 课程设计目的和要求1 1.1课程设计的目1 1.2 基本要求1 第二章 课程设计任务内容2 2.1 设计背景2 2.2简易文本编辑器设计内容2 第三章 详细设计 ...
- 用VB制作简单加法计算机,用VB设计一个简单的加法程序
计算机的多媒体技术已经广泛普及, 对于一般的用户来说, 采用可视化编程工具是的选择, VB程序设计语言就是其中一个典型的代表.Visual Basic是Microsoft Windows的编程语言.V ...
- JAVA同时输入用户名和密码_用java模拟设计一个简单的“用户注册”程序。当用户输入用户名和密码时,单击“注...
用java模拟设计一个简单的"用户注册"程序.当用户输入用户名和密码时,单击"注 2020 - 9 - 26 TAG : 所有功能均已实现,如有不满意的地方我再修改imp ...
- 编写用switch语句编程设计一个简单的计算器程序
编程要求 根据提示,在右侧编辑器补充代码.要求用switch语句编程设计一个简单的计算器程序.要求根据用户从键盘输入的表达式. 操作数1 运算符op 操作数2 计算表达式的值.指定的算术运算符为加(+ ...
- 1.设计一个敏感词过滤程序
1.设计一个敏感词过滤程序 WordFilter类 属性:数组类型[]存放敏感词 设计一个方法,调用这个方法(传参,可能会包含敏感词的字符串),返回过滤后的新的字符串public static Str ...
- .设计一个敏感词过滤程序
1.设计一个敏感词过滤程序 WordFilter类 属性:数组类型[]存放敏感词 设计一个方法,调用这个方法(传参,可能会包含敏感词的字符串),返回过滤后的新的字符串 ...
最新文章
- C++11中std::initializer_list的使用
- 【问链-EOS公开课】第八课 EOS 数据库与持久化 API(一)
- flume案例-网络数据采集-启动flume
- The writeAsCsv() method can only be used on data sets of tuples.
- letecode [204] - Count Primes
- svn update中文报错_svn不能更新也不能提交!为什么?
- c语言实现赫夫曼信源编码,哈夫曼信源编码c语言程序代码.doc
- 短时傅里叶变换原理解
- win10开发环境搭建之wsl2(Ubuntu)+Terminal+docker
- SAP MM ME21N 创建PO时报错 - Net price in CNY becomes too large –
- Arduino NBIoT使用方法一
- 二分匹配Hopcroft-Carp算法
- 人工智能(AI)和机器学习——未来的发展趋势
- 从面试官的角度谈谈后端面试
- The Sultan's Successors UVA - 167
- 汇编实现数字的输入与输出
- NRDP要比NSCA更好使用
- Linux内核网络学习
- AI初学者必看的4个顶级人工智能领域岗位
- 测试液晶显示器的软件,tLCDtest(液晶屏幕测试软件)
热门文章
- 纯水属于酸性水数据标准
- Python -- 把python文件打包成windows系统的exe文件
- 伊春职业学院计算机应用技术学院,计算机应用技术学院“创建无烟校园”活动方案...
- 生态伙伴 | 简约费控入驻飞书啦!帮助企业将费用管理化繁为简
- 联想拯救者 Y900 平板电脑 评测 联想拯救者 Y900 参数配置
- 怎么转换图片的格式?分享几种好用的图片格式转换方法
- android点击软键盘外面的区域关闭软键盘解决办法
- 简单工厂 工厂方法 抽象工厂 了解一下
- 番禺好去处,ZBOX沉浸式体验馆
- 如何编辑图片?几个图片编辑的简单方法