【简易文本编译器Python】数据结构期末课程设计

下面是部分内容,希望对你有帮助。超全保姆级课程设计,请友友点击主页,下一篇“保姆级2.0简易文本编辑器Python”一共448行运行代码。

1.设计内容

1.1问题描述 

简易文本编辑器是利用计算机进行文字加工的基本软件工具,实现对文本文件新建、打开、保存、另存、查找、替换文本、插入、删除、撤销和重做等基本操作。

在文本编辑区域,使用ScrolledText小部件实现,支持文本的滚动和编辑,同时允许用户在文本编辑区域中垂直滚动;在行号区域,显示当前文本的行号,与文本编辑区域同步滚动;菜单模块,包括文件、编辑、视图等菜单,提供各种操作和功能;状态栏具有显示总行数功能。

简易文本编辑器程序提供了基本的文本编辑功能,并且具有一些额外的功能和用户友好的界面交互。设置自动保存间隔、全屏模式切换、字体大小调整、提供重置功能、提供快捷键、可以保存编辑器的状态、使用消息框进行保存、另存为等操作的确认和提示。

1.2设计要求

该简易文本编辑器程序对用户友好的界面,编辑器界面应简洁清晰,易于理解和操作。各功能按钮和菜单项的布局应合理,不应过于拥挤或混乱。功能完备,编辑器应提供常用的文本编辑功能,如新建、打开、保存、另存为、查找、替换、撤销、重做等功能,并保证这些功能的稳定性和可靠性。

保证文本编辑效率,编辑器应具有快速编辑文本的能力,包括快速定位文本、快速插入、删除、复制、粘贴等操作,以提高用户的工作效率。

编辑器应额外具备自动保存功能,以防止意外退出或丢失文本内容。自动保存的时间间隔应可配置,并在保存时提供提示或反馈。

增加响应式设计,编辑器应具有良好的响应式设计,能够适应不同大小和分辨率的屏幕,并提供合适的滚动条和界面布局,以确保用户在不同设备上的使用体验。

编辑器应具有良好的稳定性和健壮性,能够处理各种异常情况和错误输入,并提供适当的错误提示或处理机制,以确保用户数据的安全和编辑器的稳定运行。同时具有一定的可扩展性,能够方便地添加新的功能或模块,以满足不同用户的需求,并支持后续的版本更新和功能扩展。

1.3开发环境  

    本程序开发环境为 Pycharm 2023.2.1。

import os
import shutil
import tkinter
import tkinter as tk
from tkinter import messagebox, filedialog, simpledialog, font, END, INSERT
from tkinter.scrolledtext import ScrolledText



class TextEditor:
    def __init__(self, master):
        # 初始化主窗口设置
        self.master = master
        self.master.title("简易文本编辑器")
        # 设置窗口标题
        self.master.geometry("800x600")
        # 设置窗口大小

        # 初始化各种属性
        self.file_path = None
        # 当前文件路径
        self.backup_path = None
        # 备份文件路径
        self.undo_stack = []
        # 撤销栈
        self.redo_stack = []
        # 重做栈
        self.autosave_enabled = False
        # 自动保存启用状态
        self.autosave_interval = 60
        # 自动保存间隔时间,单位:秒
        self.font_family = "Consolas"
        # 默认字体
        self.font_size = 12
        # 默认字体大小
        self.fullscreen = False
        # 全屏模式状态

        self.create_widgets()
        # 创建所有控件
        self.update_line_numbers()
        # 更新行号

    def create_widgets(self):
        # 创建文本区域
        self.text_area = ScrolledText(self.master, wrap="none")
        # 创建可滚动的文本区域
        self.text_area.pack(fill="both", expand=True)
        # 设置文本区域填充整个窗口
        self.text_area.bind("<Key>", self.track_changes)
        # 绑定键盘事件,用于跟踪更改

        # 创建垂直滚动条
        self.scroll_y = tk.Scrollbar(self.master, orient="vertical", command=self.text_area.yview)  # 创建垂直滚动条
        self.scroll_y.pack(side="right", fill="y")
        # 将滚动条放置在右侧
        self.text_area.config(yscrollcommand=self.scroll_y.set)
        # 将文本区域和滚动条连接

        # 创建行号区域
        self.line_number_area = tk.Text(self.master, width=4, padx=2, wrap="none", takefocus=0, borderwidth=0, background="#f0f0f0")  # 创建行号区域
        self.line_number_area.pack(side="left", fill="y")
        # 将行号区域放置在左侧
        self.line_number_area.tag_configure("center", justify="center")
        # 配置行号区域文本居中
        self.text_area.bind("<MouseWheel>", self.on_mouse_wheel)
        # 绑定鼠标滚轮事件
        self.text_area.bind("<Button-4>", self.on_mouse_wheel)
        # 绑定鼠标滚动事件(向上)
        self.text_area.bind("<Button-5>", self.on_mouse_wheel)
        # 绑定鼠标滚动事件(向下)

        # 创建菜单栏
        self.menu_bar = tk.Menu(self.master)
        # 创建菜单栏
        self.master.config(menu=self.menu_bar)
        # 将菜单栏配置到主窗口

        # 创建文件菜单
        self.file_menu = tk.Menu(self.menu_bar, tearoff=False)
        # 创建文件菜单
        self.menu_bar.add_cascade(label="文件", menu=self.file_menu)
        # 添加文件菜单到菜单栏
        self.file_menu.add_command(label="新建", command=self.new_file, accelerator="Ctrl+N")
        # 添加新建命令
        self.file_menu.add_command(label="打开", command=self.open_file, accelerator="Ctrl+O")
        # 添加打开命令
        self.file_menu.add_command(label="保存", command=self.save_file, accelerator="Ctrl+S")
        # 添加保存命令
        self.file_menu.add_command(label="另存为", command=self.save_file_as, accelerator="Ctrl+Shift+S")  # 添加另存为命令
        self.file_menu.add_separator()
        # 添加分隔线
        self.file_menu.add_command(label="退出", command=self.master.quit)
        # 添加退出命令

        # 创建编辑菜单
        self.edit_menu = tk.Menu(self.menu_bar, tearoff=False)
        # 创建编辑菜单
        self.menu_bar.add_cascade(label="编辑", menu=self.edit_menu)
        # 添加编辑菜单到菜单栏

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值