简单的Python记事本应用程序

下面是一个简单的Python记事本应用程序,使用Tkinter库来创建图形用户界面。这个程序允许用户输入文本并保存到文件中。

首先,确保你已经安装了Python和Tkinter库(Tkinter通常是Python标准库的一部分,所以大多数情况下不需要单独安装)。

以下是完整的代码:

python 复制代码
import tkinter as tk
from tkinter import filedialog, messagebox

class Notepad:
    def __init__(self, root):
        self.root = root
        self.root.title("简易记事本")
        self.root.geometry("600x400")

        # 创建文本框
        self.text_area = tk.Text(self.root, undo=True)
        self.text_area.pack(fill=tk.BOTH, expand=1)

        # 创建菜单栏
        self.menu_bar = tk.Menu(self.root)
        self.file_menu = tk.Menu(self.menu_bar, tearoff=0)
        self.file_menu.add_command(label="新建", command=self.new_file)
        self.file_menu.add_command(label="打开", command=self.open_file)
        self.file_menu.add_command(label="保存", command=self.save_file)
        self.file_menu.add_separator()
        self.file_menu.add_command(label="退出", command=self.exit_app)
        self.menu_bar.add_cascade(label="文件", menu=self.file_menu)

        self.edit_menu = tk.Menu(self.menu_bar, tearoff=0)
        self.edit_menu.add_command(label="撤销", command=self.undo_action)
        self.edit_menu.add_command(label="重做", command=self.redo_action)
        self.menu_bar.add_cascade(label="编辑", menu=self.edit_menu)

        self.root.config(menu=self.menu_bar)

    def new_file(self):
        if messagebox.askokcancel("新建", "是否要清除当前内容?"):
            self.text_area.delete(1.0, tk.END)

    def open_file(self):
        file_path = filedialog.askopenfilename(defaultextension=".txt",
                                              filetypes=[("Text files", "*.txt"),
                                                         ("All files", "*.*")])
        if file_path:
            with open(file_path, "r") as file:
                content = file.read()
                self.text_area.delete(1.0, tk.END)
                self.text_area.insert(tk.END, content)

    def save_file(self):
        file_path = filedialog.asksaveasfilename(defaultextension=".txt",
                                                 filetypes=[("Text files", "*.txt"),
                                                            ("All files", "*.*")])
        if file_path:
            with open(file_path, "w") as file:
                content = self.text_area.get(1.0, tk.END)
                file.write(content)
            messagebox.showinfo("保存成功", f"文件已保存至 {file_path}")

    def exit_app(self):
        if messagebox.askokcancel("退出", "确定要退出吗?"):
            self.root.destroy()

    def undo_action(self):
        try:
            self.text_area.edit_undo()
        except tk.TclError:
            pass

    def redo_action(self):
        try:
            self.text_area.edit_redo()
        except tk.TclError:
            pass

if __name__ == "__main__":
    root = tk.Tk()
    notepad = Notepad(root)
    root.mainloop()

你可以将上述代码复制到一个.py文件中并运行它。这将启动一个简单的记事本应用程序,带有基本的文件操作功能(新建、打开、保存)和编辑功能(撤销、重做)。

效果图:

相关推荐
serve the people3 分钟前
PQ+IVF组合解决海量向量内存占用高和检索慢的问题
人工智能·python
on_pluto_5 分钟前
【debug】解决 5070ti 与 pytorch 版本不兼容的问题
人工智能·pytorch·python
嫂子的姐夫6 分钟前
02-多线程
爬虫·python·多线程·并发爬虫·基础爬虫
free-elcmacom18 分钟前
MATLAB信号分析:眼图生成与高速系统评估
开发语言·matlab·信号处理
多则惑少则明26 分钟前
【算法题4】找出字符串中的最长回文子串(Java版)
java·开发语言·数据结构·算法
【建模先锋】34 分钟前
基于Python的智能故障诊断系统 | SmartDiag AI (基础版)V1.0 正式发布!
开发语言·人工智能·python·故障诊断·智能分析平台·大数据分析平台·智能故障诊断系统
T.O.P_KING35 分钟前
Common Go Mistakes(IV 字符串)
开发语言·后端·golang
AIsdhuang37 分钟前
2025 年企业 AI 培训精选指南:聚焦企业培训场景
人工智能·python
我命由我1234537 分钟前
微信小程序 - 避免在 data 初始化中引用全局变量
开发语言·前端·javascript·微信小程序·小程序·前端框架·js