# LightningTextEditor.py
from tkinter import *
from tkinter.filedialog import *
class LightningTextEditor :
filename = ""
def __init__(self):
self.window = Tk()
self.window.title("Lightning Text Editor")
menubar = Menu(self.window, bg = "#404040", fg = "#60ffff")
self.window.config(menu = menubar)
fileMenu = Menu(menubar)
menubar.add_cascade(label = "File", menu = fileMenu)
fileMenu.add_command(label = "Open (Ctrl+N)", command = self.openFile, accelerator = "Ctrl+N")
fileMenu.add_command(label = "Save (Ctrl+S)", command = self.saveFile, accelerator = "Ctrl+S")
fileMenu.add_command(label = "Save as (Ctrl+Shift+S)", command = self.saveasFile, accelerator = "Ctrl+Shift+S")
scrollbar = Scrollbar(self.window, bg = "#404040")
scrollbar.pack(side = RIGHT, fill = Y)
self.text = Text(self.window, width = 40, height = 20, wrap = WORD, yscrollcommand = scrollbar.set, font = "Consolas 24", fg = "#60ffff", bg = "#252525", insertbackground = "#99ffff")
self.text.pack(side = LEFT, fill = BOTH, expand = YES)
scrollbar.config(command = self.text.yview)
self.window.mainloop()
def saveFile(self) :
outfile = open(self.filename, "w")
outfile.write(self.text.get(1.0, END))
outfile.close()
def saveasFile(self) :
filename = asksaveasfilename()
outfile = open(filename, "w")
outfile.write(self.text.get(1.0, END))
outfile.close()
def Save(self) :
self.toplevel.destroy()
self.saveFile()
self.text.delete(1.0, END)
self.filename = askopenfilename()
infile = open(self.filename, "r")
self.text.insert(END, infile.read())
infile.close()
def DontSave(self) :
self.toplevel.destroy()
self.text.delete(1.0, END)
self.filename = askopenfilename()
infile = open(self.filename, "r")
self.text.insert(END, infile.read())
infile.close()
def openFile(self) :
if self.text.get(1.0, END) == "\n" :
self.filename = askopenfilename()
infile = open(self.filename, "r")
self.text.insert(END, infile.read())
infile.close()
else :
self.toplevel = Toplevel(self.window)
label = Label(self.toplevel, text = "What do you want to do?")
choose = [("Save and leave this window", 1),
("Don't save but leave this window", 2)
]
v = IntVar()
for cho, num in choose :
if (num == 1) :
b = Radiobutton(self.toplevel, text = cho, variable = v, value = num, command = self.Save, indicatoron = False)
if (num == 2) :
b = Radiobutton(self.toplevel, text = cho, variable = v, value = num, command = self.DontSave, indicatoron = False)
b.pack(anchor = "center")
self.toplevel.mainloop()
x = LightningTextEditor()
Lightning Text Editor
原理以后再说