参考网上的写了个Text的小程序

回复 收藏
自己写了一个简单的文本编辑器(还有很多功能未完成,以后可能会填坑):
#--------------------------------------------------#
#                  coding:utf-8                    #
#                 功能:简单文本编辑器                #
#                 版本:1.0                         #
#                 时间:2016-6-18                   #
#                 作者:xingyys                     #
#--------------------------------------------------#
from Tkinter import *
from tkFileDialog import *
from tkMessageBox import *
import platform
import os

# 新建功能
def newfile():
    global filename
    filename = 'Newfile.txt'
    file = open('Newfile.txt','w')
    file.close()


# 打开文件
def openfile():
    systype = platform.system()
    if systype == 'Windows':
        basedir = 'C:\\'
    else:
        basedir = '/'
    filename = askopenfilename(initialdir = basedir)
    try:
        Readfile = open(filename,'r')
    except IOError, errmsg:
        print '%s 打开失败' % errmsg
    else:
        editbox.delete(1.0,END)
        for eachline in Readfile:
            editbox.insert(INSERT,eachline)
        Readfile.close()

# 保存文件
def savefile():
    save_data = editbox.get(1.0, END)
    try:
        Changefile = open(filename,'w')
        Changefile.writelines(save_data.encode('utf-8'))
        Changefile.close()
        showinfo(title = '提示',message = '保存成功')
    except:
        showinfo(title = '错误',message = '未知错误,保存失败')

# 另存为功能
def saveasfile():
    systype = platform.system()
    if systype == 'Windows':
        basedir = 'C:\\'
    else:
        basedir = '/'
    filename = asksaveasfile(initialdir = basedir)      # 这里出来的filename为实例,不是文件路径
    save_data = editbox.get(1.0, END)
    try:
        filename.writelines(save_data.encode('utf-8'))
        filename.close()
        showinfo(title = '提示',message = '保存成功')
    except:
        pass

# 退出功能
def Textquit():
    top.destroy()

# 帮助信息
def printhelp():
    helpcon = Toplevel()
    helpcon.resizable(False, False)           # 控制窗口大小
    helpcon.geometry('200x80')
    Label(helpcon,text = '功能:简单文本编辑器\n'
                         '版本:1.0\n'
                         '时间:2016-6-18\n'
                         '作者:xingyys').pack(fill = BOTH)
# 撤销操作
def EditUndo():
    editbox.edit_undo()

def InitMenu():
    # 初始化菜单
    menubar = Menu(top)

    # 创建文件菜单
    filemenu = Menu(menubar,tearoff = 0)
    filemenu.add_command(label = '新建',command = newfile)
    filemenu.add_command(label = '打开',command = openfile)
    filemenu.add_command(label = '保存',command = savefile)
    filemenu.add_command(label = '另存为',command = saveasfile)
    filemenu.add_command(label = '退出',command = Textquit)
    menubar.add_cascade(label = '文件',menu = filemenu)

    # 创建编辑菜单
    editmenu = Menu(menubar,tearoff = 0)
    editmenu.add_command(label = '撤销 Ctrl+z',command = EditUndo)
    # editmenu.add_separator()                    # 分隔线
    editmenu.add_command(label = '剪切 Ctrl+x')
    editmenu.add_command(label = '复制 Ctrl+c')
    editmenu.add_command(label = '粘贴 Ctrl+v')
    #editmenu.add_command(label = '删除')
    editmenu.add_command(label = '全选 Ctrl+/')
    menubar.add_cascade(label = '编辑',menu = editmenu)

    # 创建格式菜单
    formatmenu = Menu(menubar,tearoff = 0)
    formatmenu.add_command(label = '自动换行')
    formatmenu.add_command(label = '字体')
    menubar.add_cascade(label = '格式',menu = formatmenu)

    # 创建查看菜单
    checkmenu = Menu(menubar,tearoff = 0)
    checkmenu.add_checkbutton(label = '状态栏')
    menubar.add_cascade(label = '查看',menu = checkmenu)

    # 创建帮助菜单
    helpmenu = Menu(menubar,tearoff = 0)
    helpmenu.add_command(label = '关于',command = printhelp)
    menubar.add_cascade(label = '帮助',menu = helpmenu)

    top['menu'] = menubar


top = Tk()
top.geometry('500x400')
top.title('xyys_Editor')
InitMenu()
editbox = Text(top,undo = YES)
#Label(top,text = '001\n002\n003\n',anchor = N,width = 3,bg = 'white').pack(side = LEFT,expand = 1,fill = Y)
editbox.pack(side = TOP,expand = 1,fill = BOTH)
top.protocol('WM_DELETE_WINDOW',Textquit)
top.mainloop()
2016-06-19 22:24 举报
已邀请:
0

xingyys

赞同来自:

重新更新了下,添加了一些功能,(剪切,复制,粘贴,全选,滚动条,右击菜单)

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: