python写的一个文本编辑器

时间:2021-10-12 08:38:04 


#!/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()

标签:文本编辑器
0
投稿

猜你喜欢

  • 如何获得上一个月份是几月?

    2009-11-23 20:38:00
  • MySQL 查询的排序、分页相关

    2024-01-19 18:26:59
  • Vue3中如何使用异步请求示例详解

    2024-04-27 16:04:56
  • 详解Vue CLI3配置解析之css.extract

    2024-04-28 09:26:04
  • 页面嵌入Windows Media Player播放器代码需要注意的

    2023-07-02 17:04:48
  • 解决numpy数组互换两行及赋值的问题

    2023-07-26 16:51:24
  • python聊天室(虽然很简洁,但是可以用)

    2021-05-21 01:10:46
  • [关注细节的最佳方案]有效期时间格式的展现

    2009-10-30 18:51:00
  • Python Django ORM与模型详解

    2022-01-03 10:40:53
  • 浅析python函数式编程

    2022-07-14 22:39:16
  • 决策树的python实现方法

    2023-04-22 04:25:02
  • 一百多行python代码实现抢票助手

    2022-05-20 00:55:52
  • 浅析SQL Server中包含事务的存储过程

    2024-01-15 21:27:39
  • python实现批量文件重命名

    2021-03-25 22:04:38
  • Python中eval()函数的详细使用教程

    2023-11-22 15:51:39
  • Django模板语言 Tags使用详解

    2022-09-27 23:37:35
  • Python基于当前时间批量创建文件

    2022-05-26 22:46:34
  • Python面向对象实现方法总结

    2022-03-11 08:50:41
  • 10分钟带你上手Vue3中新增的API

    2024-06-05 10:03:00
  • JavaScript 组件之旅(四):测试 JavaScript 组件

    2009-10-13 20:32:00
  • asp之家 网络编程 m.aspxhome.com