用python写一个简单文本编辑器,包含新建、打开、保存txt文件、粗体斜体下划线、设置字体字号的功能
时间: 2024-11-22 20:40:09 浏览: 1
C++实现的文本编辑器,支持打开和保存文件, 设置文本字体颜色, 粗体, 斜体, 下划线, 大小, 种类, 复制, 粘贴, 剪贴
在Python中,我们可以使用内置的`tkinter`库来创建一个简单的文本编辑器,并结合`os`和`pathlib`库处理文件操作。以下是一个简化的示例,它包含了基本功能:
```python
import tkinter as tk
from tkinter import filedialog, messagebox
from tkinter.font import Font
class SimpleTextEditor(tk.Tk):
def __init__(self):
super().__init__()
self.title("简易文本编辑器")
self.geometry("800x600")
# 创建文本区域
self.text_area = tk.Text(self)
self.text_area.pack(fill=tk.BOTH, expand=True)
# 创建菜单栏
menu_bar = tk.Menu(self)
self.config(menu=menu_bar)
# 新建文件
file_menu = tk.Menu(menu_bar, tearoff=False)
file_menu.add_command(label="新建", command=self.new_file)
file_menu.add_command(label="打开", command=self.open_file)
file_menu.add_separator()
file_menu.add_command(label="保存", command=self.save_file)
menu_bar.add_cascade(label="文件", menu=file_menu)
# 格式化工具
format_menu = tk.Menu(menu_bar, tearoff=False)
format_menu.add_checkbutton(label="粗体", onvalue="bold", offvalue="", command=lambda: self.toggle_font_style("bold"))
format_menu.add_checkbutton(label="斜体", onvalue="italic", offvalue="", command=lambda: self.toggle_font_style("italic"))
format_menu.add_checkbutton(label="下划线", onvalue="underline", offvalue="", command=lambda: self.toggle_font_style("underline"))
format_menu.add_separator()
format_menu.add_command(label="设置字体", command=self.set_font)
menu_bar.add_cascade(label="格式", menu=format_menu)
def new_file(self):
self.text_area.delete(1.0, tk.END)
def open_file(self):
filename = filedialog.askopenfilename(filetypes=[("Text files", "*.txt")])
if filename:
with open(filename, "r") as f:
content = f.read()
self.text_area.insert(tk.END, content)
def save_file(self):
content = self.text_area.get(1.0, tk.END)
if not content:
messagebox.showinfo("提示", "未做任何更改,无需保存?")
else:
filename = filedialog.asksaveasfilename(initialdir=".", defaultextension=".txt", filetypes=[("Text files", "*.txt")])
if filename:
with open(filename, "w") as f:
f.write(content)
def toggle_font_style(self, style):
font = self.text_area.cget("font")
family, size, attrs = font.split(" ")
if style in attrs:
attrs.remove(style)
else:
attrs.append(style)
self.text_area.configure(font=family + " {size} " + " ".join(attrs))
def set_font(self):
font_family = tk.filedialog.askopenfilename(title="选择字体", initialfile="")
if font_family:
self.text_area.configure(font=(font_family, 12)) # 可以在这里添加字体大小选择
if __name__ == "__main__":
app = SimpleTextEditor()
app.mainloop()
阅读全文