Python自制文本编辑器

# 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

原理以后再说

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值