python写的一个文本编辑器


Posted in Python onJanuary 23, 2014
#!/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()
Python 相关文章推荐
python获得两个数组交集、并集、差集的方法
Mar 27 Python
Python实现单词拼写检查
Apr 25 Python
Python类的定义、继承及类对象使用方法简明教程
May 08 Python
python cx_Oracle模块的安装和使用详细介绍
Feb 13 Python
python的mysqldb安装步骤详解
Aug 14 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
Feb 23 Python
python 将md5转为16字节的方法
May 29 Python
python绘制直线的方法
Jun 30 Python
pytest中文文档之编写断言
Sep 12 Python
Python爬取腾讯视频评论的思路详解
Dec 19 Python
python实现单张图像拼接与批量图片拼接
Mar 23 Python
python删除csv文件的行列
Apr 06 Python
python生成指定长度的随机数密码
Jan 23 #Python
python使用beautifulsoup从爱奇艺网抓取视频播放
Jan 23 #Python
python3使用urllib示例取googletranslate(谷歌翻译)
Jan 23 #Python
pyside写ui界面入门示例
Jan 22 #Python
pyqt和pyside开发图形化界面
Jan 22 #Python
python检测lvs real server状态
Jan 22 #Python
python使用rsa加密算法模块模拟新浪微博登录
Jan 22 #Python
You might like
PHPwind整合最土系统用户同步登录实现方法
2010/12/08 PHP
自定义php类(查找/修改)xml文档
2013/03/26 PHP
一个简洁的PHP可逆加密函数(分享)
2013/06/06 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
CLASS_CONFUSION JS混淆 全源码
2007/12/12 Javascript
Node.js生成HttpStatusCode辅助类发布到npm
2013/04/09 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
AngularJS之自定义服务详解(factory、service、provider)
2017/04/14 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
2017/09/18 Javascript
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
Layui table field初始化加载时进行隐藏的方法
2019/09/19 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
JS实现多功能计算器
2020/10/28 Javascript
Python的Bottle框架的一些使用技巧介绍
2015/04/08 Python
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
文秘自荐信
2013/10/20 职场文书
建筑工程技术应届生求职信
2013/11/17 职场文书
咖啡厅创业计划书范本
2014/01/22 职场文书
县优秀教师事迹材料
2014/01/31 职场文书
《雪地里的小画家》教学反思
2014/02/22 职场文书
yy婚礼主持词
2014/03/14 职场文书
石油工程专业毕业生求职信
2014/04/13 职场文书
公司爱心捐款倡议书
2014/05/14 职场文书
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
酒店服务员岗位职责
2015/02/09 职场文书
廉洁自律证明
2015/06/24 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL