Python自制文本编辑器

本文介绍了使用Python和Tkinter库开发的一个简单的文本编辑器,包含菜单栏、文件操作、基本编辑功能以及查找文本的功能实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python自制文本编辑器。 随便写的半成品

from tkinter import *
from tkinter import filedialog, messagebox


class FindWindow:
    def __init__(self, parent):
        self.parent = parent
        self.find_window = Toplevel(parent)
        self.find_window.title("Find")
        self.find_window.geometry("300x100")

        # 创建查找标签和输入框
        self.find_label = Label(self.find_window, text="Find:")
        self.find_label.grid(row=0, column=0, padx=5, pady=5)
        self.find_entry = Entry(self.find_window)
        self.find_entry.grid(row=0, column=1, padx=5, pady=5)

        # 创建查找按钮
        self.find_button = Button(self.find_window, text="Find", command=self.find_text)
        self.find_button.grid(row=0, column=2, padx=5, pady=5)

    def find_text(self):
        """Find the specified text in the text area."""
        # 获取要查找的文本
        search_text = self.find_entry.get()

        if search_text:
            # 开始查找
            start_index = "1.0"
            while True:
                # 从当前位置开始搜索,直到找到目标文本或搜索到文本末尾
                start_index = self.parent.text_area.search(search_text, start_index, stopindex=END)
                if not start_index:
                    # 如果没有找到目标文本,弹出提示框
                    messagebox.showinfo("Find", "No more occurrences found.")
                    break
                else:
                    # 如果找到了目标文本,选中它并将焦点设置在找到的文本上
                    end_index = f"{start_index}+{len(search_text)}c"
                    self.parent.text_area.tag_add(SEL, start_index, end_index)
                    self.parent.text_area.mark_set(INSERT, start_index)
                    self.parent.text_area.see(INSERT)
                    # 更新起始位置,以便继续搜索下一个目标文本
                    start_index = end_index
        else:
            # 如果未输入查找文本,弹出提示框
            messagebox.showwarning("Find", "Please enter text to find.")


class Main:
    def __init__(self):
        self.root = Tk()
        self.root.title('TkNotepad - Untitled')
        self.root.geometry('720x500')

        self.current_file = None
        find_window = Find
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值