下面是一个使用 Python 和 PyQt5 创建的简单记事本应用程序的示例代码。这个应用支持基本的文本编辑功能,包括打开、保存文件以及退出程序。
代码实现
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QFileDialog, QAction
class Notepad(QMainWindow):
def __init__(self):
super().__init__()
# 设置窗口标题和大小
self.setWindowTitle("记事本")
self.setGeometry(100, 100, 600, 400)
# 创建文本编辑区
self.text_edit = QTextEdit(self)
self.setCentralWidget(self.text_edit)
# 创建菜单栏
self.create_menu()
def create_menu(self):
menu_bar = self.menuBar()
# 文件菜单
file_menu = menu_bar.addMenu('文件')
# 创建打开文件的动作
open_action = QAction('打开', self)
open_action.triggered.connect(self.open_file)
file_menu.addAction(open_action)
# 创建保存文件的动作
save_action = QAction('保存', self)
save_action.triggered.connect(self.save_file)
file_menu.addAction(save_action)
# 创建退出应用的动作
exit_action = QAction('退出', self)
exit_action.triggered.connect(self.close)
file_menu.addAction(exit_action)
def open_file(self):
options = QFileDialog.Options()
file_name, _ = QFileDialog.getOpenFileName(self, "打开文件", "", "文本文件 (*.txt);;所有文件 (*)", options=options)
if file_name:
with open(file_name, 'r', encoding='utf-8') as file:
self.text_edit.setPlainText(file.read())
def save_file(self):
options = QFileDialog.Options()
file_name, _ = QFileDialog.getSaveFileName(self, "保存文件", "", "文本文件 (*.txt);;所有文件 (*)", options=options)
if file_name:
with open(file_name, 'w', encoding='utf-8') as file:
file.write(self.text_edit.toPlainText())
if __name__ == '__main__':
app = QApplication(sys.argv)
notepad = Notepad()
notepad.show()
sys.exit(app.exec_())
代码讲解
-
窗口设置:
- 创建一个继承自
QMainWindow
的Notepad
类,并设置窗口标题和初始尺寸。
- 创建一个继承自
-
文本编辑区域:
- 使用
QTextEdit
组件作为文本编辑区域,并将其设为主窗口的中心小部件。
- 使用
-
菜单栏:
- 创建一个包含“文件”菜单的菜单栏,并添加打开、保存和退出功能的动作。
-
打开和保存文件:
- 使用
QFileDialog
创建对话框,允许用户选择要打开或保存的文件。通过读取文件和保存文本的方法来实现基本的文件操作。 - 文本文件以 UTF-8 编码读写,以确保支持多种语言字符。
- 使用
运行代码
将上述代码保存到一个 Python 文件中,例如 notepad.py
,并在命令行中运行:
python notepad.py
功能说明
- 打开:可以打开已有的文本文件并在编辑区域中显示内容。
- 保存:可以将当前文本编辑区域的内容保存为文本文件。
- 退出:退出应用程序。