python实现可以保存、可以加粗字体、可以增加下划线、可以更改编码的记事本源码
时间: 2023-08-04 13:03:22 浏览: 50
以下是一个简单的实现可以保存、可以加粗字体、可以增加下划线、可以更改编码的记事本源码:
```python
import tkinter as tk
from tkinter import filedialog
from tkinter import font
class Notepad:
def __init__(self, master):
self.master = master
master.title("记事本")
# 创建文本框
self.text = tk.Text(master, font=("Arial", 12))
self.text.pack(fill="both", expand=True)
# 创建菜单
menu = tk.Menu(master)
master.config(menu=menu)
file_menu = tk.Menu(menu)
menu.add_cascade(label="文件", menu=file_menu)
file_menu.add_command(label="新建", command=self.new_file)
file_menu.add_command(label="打开", command=self.open_file)
file_menu.add_command(label="保存", command=self.save_file)
file_menu.add_separator()
file_menu.add_command(label="退出", command=master.quit)
edit_menu = tk.Menu(menu)
menu.add_cascade(label="编辑", menu=edit_menu)
edit_menu.add_command(label="加粗", command=self.bold)
edit_menu.add_command(label="下划线", command=self.underline)
encoding_menu = tk.Menu(menu)
menu.add_cascade(label="编码", menu=encoding_menu)
encoding_menu.add_command(label="UTF-8", command=lambda: self.change_encoding("utf-8"))
encoding_menu.add_command(label="GBK", command=lambda: self.change_encoding("gbk"))
# 创建字体
self.bold_font = font.Font(self.text, self.text.cget("font"))
self.bold_font.configure(weight="bold")
self.underline_font = font.Font(self.text, self.text.cget("font"))
self.underline_font.configure(underline=True)
def new_file(self):
self.text.delete("1.0", tk.END)
def open_file(self):
file_path = filedialog.askopenfilename()
if file_path:
with open(file_path, "r") as f:
self.text.delete("1.0", tk.END)
self.text.insert(tk.END, f.read())
def save_file(self):
file_path = filedialog.asksaveasfilename()
if file_path:
with open(file_path, "w") as f:
f.write(self.text.get("1.0", tk.END))
def bold(self):
self.text.tag_add("bold", tk.SEL_FIRST, tk.SEL_LAST)
self.text.tag_config("bold", font=self.bold_font)
def underline(self):
self.text.tag_add("underline", tk.SEL_FIRST, tk.SEL_LAST)
self.text.tag_config("underline", font=self.underline_font)
def change_encoding(self, encoding):
text = self.text.get("1.0", tk.END)
self.text.delete("1.0", tk.END)
self.text.insert(tk.END, text.encode(encoding).decode(encoding))
root = tk.Tk()
notepad = Notepad(root)
root.mainloop()
```
这个记事本程序使用了 `tkinter` 模块来创建 GUI 界面,支持新建、打开、保存文件,以及加粗、下划线、更改编码等功能。