当前位置 博文首页 > python写的一个文本编辑器

    python写的一个文本编辑器

    作者:admin 时间:2021-06-19 19:32

    复制代码 代码如下:

    #!/usr/bin/env python
    #-*- coding: utf-8 -*-
    #=============================================================================
    #     FileName:
    #         Desc:
    #       Author: ToughGuy
    #      Version: 0.0.1
    #   LastChange: 2013-02-20 14:52:11
    #      History:
    #=============================================================================

    from Tkinter import *
    import tkMessageBox,tkFileDialog
    import platform

    # nl = os.linesep

    def openfile():
        global filename             # 使用global声明为全局变量,方便后边的程序调用
        systype = platform.system() # 判断系统类型
        if systype == 'windows':
            basedir = 'c:\\'
        else:
            basedir = '/'
        filename = tkFileDialog.askopenfilename(initialdir=basedir)
        try:
            fobj_r = open(filename, 'r')
        except IOError, errmsg:
            print '*** Failed open file:', errmsg
        else:
            editbox.delete(1.0, END)
            for eachline in fobj_r:
                editbox.insert(INSERT, eachline)
            fobj_r.close()

    def savefile():
        save_data = editbox.get(1.0, END)
        try:
            fobj_w = open(filename, 'w')
            fobj_w.writelines(save_data.encode('utf-8'))
            fobj_w.close()
            tkMessageBox.showinfo(title='提示',
                    message='保存成功')
        except IOError, errmsg:
            tkMessageBox.showwarning(title='保存失败', message='保存出错    ')
            tkMessageBox.showwarning(title='错误信息', message=errmsg)
        except NameError:
            tkMessageBox.showwarning(title='保存失败', message='未打开文件')
    def showlinenum():
        tkMessageBox.showinfo(title='提示',
                message='这个功能作者现在不会写,放这里装饰用的.')
    def destroy_ui(ui):
        ui.destroy()

    def aboutauthor():
        author_ui = Toplevel()
        author_ui.title('关于')
        author_ui.geometry('200x80')
        about_string = Label(author_ui,
                text="作者: ToughGuy")
        confirmbtn = Button(author_ui, text='确定',
                command=lambda:destroy_ui(author_ui))
        about_string.pack()
        confirmbtn.pack()
        # author_ui.mainloop()

    def CreateMenus():
        # 初始化菜单
        Menubar = Menu(root)

        # 创建文件菜单
        filemenu = Menu(Menubar, tearoff=0)
        filemenu.add_command(label='打开文件', command=openfile)
        filemenu.add_command(label='保存文件', command=savefile)
        filemenu.add_command(label='退出', command=lambda:destroy_ui(root))
        Menubar.add_cascade(label='文件', menu=filemenu)

        # 创建编辑菜单
        editmenu = Menu(Menubar, tearoff=0)
        editmenu.add_command(label='显示行号', command=showlinenum)
        Menubar.add_cascade(label='编辑', menu=editmenu)

        # 创建帮助菜单
        helpmenu = Menu(Menubar, tearoff=0)
        helpmenu.add_command(label='关于作者', command=aboutauthor)
        Menubar.add_cascade(label='帮助', menu=helpmenu)
        root.config(menu=Menubar)

    root = Tk()
    root.title('文本编辑器')
    root.geometry('500x400')
    CreateMenus()
    editbox = Text(root, width=70, height=25, bg='white')
    editbox.pack(side=TOP, fill=X)
    root.mainloop()

    js