代码
import webbrowser
from io import TextIOWrapper
from tkinter import *
from tkinter.filedialog import *
from tkinter.colorchooser import *
from tkinter.simpledialog import *
from tkinter.messagebox import *
from datetime import datetime
class frame(Frame):
def __init__(self,master=None):
super().__init__(master)
self.master=master
self.filename=None
self.textpad=None
self.pack()
self.mai()
def mai(self):
menubar=Menu(root)
menuFile=Menu(menubar)
menuEdit=Menu(menubar)
menuColor = Menu(menubar)
menuFont = Menu(menubar)
menuHelp=Menu(menubar)
menubar.add_cascade(label="文件(F)",menu=menuFile)
menubar.add_cascade(label="编辑(E)",menu=menuEdit)
menubar.add_cascade(label="颜色(C)",menu=menuColor)
menubar.add_cascade(label="字体(O)",menu=menuFont)
menubar.add_cascade(label="帮助(H)",menu=menuHelp)
menuFile.add_command(label="新建",accelerator="ctrl+n",command=self.File1)
menuFile.add_command(label="打开",accelerator="ctrl+o",command=self.File2)
menuFile.add_command(label="保存",accelerator="ctrl+s",command=self.File3)
menuFile.add_command(label="另存",accelerator="ctrl+e",command=self.File4)
menuFile.add_separator()
menuFile.add_command(label="退出",accelerator="ctrl+q",command=self.File5)
menuEdit.add_command(label="搜索",accelerator="ctrl+f",command=self.Edit1)
menuEdit.add_command(label="替换",accelerator="ctrl+h",command=self.Edit2)
menuEdit.add_command(label="插入图片", accelerator="ctrl+b", command=self.Edit3)
menuEdit.add_separator()
menuEdit.add_command(label="当前时间",accelerator="F5",command=self.Edit4)
menuColor.add_command(label="背景颜色",accelerator="ctrl+1",command=self.Color1)
menuColor.add_command(label="字体颜色",accelerator="ctrl+2",command=self.Color2)
menuColor.add_command(label="字体外描边",accelerator="ctrl+3",command=self.Color3)
menuColor.add_separator()
menuColor.add_command(label="字体内描边",accelerator="ctrl+4",command=self.Color4)
menuFont.add_command(label="字体大小",accelerator="ctrl+5",command=self.Font1)
menuFont.add_separator()
menuFont.add_command(label="字体类型",accelerator="ctrl+6",command=self.Font2)
menuHelp.add_command(label="帮助网页",accelerator="ctrl+7",command=self.Help1)
menuHelp.add_command(label="关于",accelerator="ctrl+8",command=self.Help2)
root.bind("",lambda event:self.File1())
root.bind("",lambda event:self.File2())
root.bind("",lambda event:self.File3())
root.bind("",lambda event:self.File4())
root.bind("",lambda event:self.File5())
root.bind("",lambda event:self.Edit1())
root.bind("",lambda event:self.Edit2())
root.bind("",lambda event:self.Edit3())
root.bind("",lambda event:self.Edit4())
root.bind("", lambda event: self.Color1())
root.bind("", lambda event: self.Color2())
root.bind("", lambda event: self.Color3())
root.bind("", lambda event: self.Color4())
root.bind("", lambda event: self.Font1())
root.bind("", lambda event: self.Font2())
root.bind("", lambda event: self.Help1())
root.bind("", lambda event: self.Help2())
root["menu"]=menubar
self.textpad=Text(root,width=660,height=630)
self.textpad.pack()
def File1(self):
self.filename=asksaveasfile(title="选择新建路径",defaultextension=".txt",initialfile="未命名.txt")
def File2(self):
self.textpad.delete(1.0,END)
self.filename=askopenfilename()
with open(f"{self.filename}")as f:
self.textpad.insert(INSERT,f.read())
def File3(self):
if (type(self.filename)==TextIOWrapper):
with open(self.filename.name, "w+")as f:
f.write(self.textpad.get(1.0, END))
elif(type(self.filename)==str):
with open(self.filename, "w+")as f:
f.write(self.textpad.get(1.0, END))
else:
self.filename = asksaveasfile(title="选择保存路径", defaultextension=".txt", initialfile="未命名.txt")
print(self.filename)
with open(self.filename.name, "w+")as f:
f.write(self.textpad.get(1.0, END))
def File4(self):
self.filename03 = asksaveasfile(title="选择另存路径", defaultextension=".txt", initialfile="未命名.txt")
with open(f"{self.filename03.name}","w+")as f:
f.write(self.textpad.get(1.0,END))
def File5(self):
self.quit()
def Edit1(self):
fan=askstring(title="请输入需要查找内容",prompt="请输入")
if(fan in self.textpad.get(1.0,END)):
messagebox.showinfo("查找结果", "查找内容存在")
else:
messagebox.showinfo("查找结果", "不好意思,查找内容不存在")
def Edit2(self):
self.ask = askstring(title="请输入替换前", prompt="请输入")
if self.ask in self.textpad.get(1.0, END):
self.ask01 = askstring(title="请输入替换后", prompt="请输入")
aa=self.textpad.get(1.0, END).replace(f"{self.ask}",f"{self.ask01}")
self.textpad.delete(1.0, END)
self.textpad.insert(INSERT, aa)
else:
messagebox.showinfo("提示","不存在")
def Edit3(self):
my_photo = PhotoImage(file="almond_PNG17.png")
self.textpad.image_create(END, image=my_photo)
def Edit4(self):
dt = datetime.now()
self.textpad.insert(INSERT, dt.strftime( '%Y-%m-%d %I:%M:%S %p' ))
def Color1(self):
self.color=askcolor(title="请选择背景色")
self.textpad["background"]=self.color[1]
def Color2(self):
self.color=askcolor(title="请选择字体颜色")
self.textpad["foreground"]=self.color[1]
def Color3(self):
pass
def Color4(self):
pass
def Font1(self):
root1=Tk()
root1.geometry("250x100")
self.size=Scale(root1, to=10, length=200, tickinterval=0.1, orient=HORIZONTAL, command=self.size1)
self.size.pack()
print(self.size)
root1.mainloop()
def size1(self,v):
self.textpad["font"]=v
print(v)
def Font2(self):
self.size1("楷体")
def Help1(self):
webbrowser.open("http://localhost:8080/web_test/bootstrap/bb.jsp")
def Help2(self):
messagebox.showinfo("关于", "由ZGT开发,一切解释权归本人所有!")
root=Tk()
root.geometry("400x400+100+100")
root.title("ZGT的记事本")
app=frame(master=root)
root.mainloop()