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 tkinter模块中类继承的三种方式分析
Aug 08 Python
详解Python下ftp上传文件linux服务器
Jun 21 Python
Python OpenCV中的resize()函数的使用
Jun 20 Python
django 捕获异常和日志系统过程详解
Jul 18 Python
python爬虫selenium和phantomJs使用方法解析
Aug 08 Python
Pyqt5自适应布局实例
Dec 13 Python
Python : turtle色彩控制实例详解
Jan 19 Python
后端开发使用pycharm的技巧(推荐)
Mar 27 Python
解决django的template中如果无法引用MEDIA_URL问题
Apr 07 Python
django 解决自定义序列化返回处理数据为null的问题
May 20 Python
python如何写出表白程序
Jun 01 Python
Python pandas对excel的操作实现示例
Jul 21 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
php中var_export与var_dump的区别分析
2010/08/21 PHP
yii框架表单模型使用及以数组形式提交表单数据示例
2014/04/30 PHP
codeigniter实现get分页的方法
2015/07/10 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
免费空间广告万能消除代码
2006/09/04 Javascript
actionscript与javascript的区别
2011/05/25 Javascript
javascript中this做事件参数相关问题解答
2013/03/17 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
javascript函数声明和函数表达式区别分析
2014/12/02 Javascript
Nodejs实现多人同时在线移动鼠标的小游戏分享
2014/12/06 NodeJs
Javascript基础教程之数据类型转换
2015/01/18 Javascript
jQuery创建DOM元素实例解析
2015/01/19 Javascript
深入解析JavaScript的闭包机制
2015/10/20 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
关于vue.js v-bind 的一些理解和思考
2017/06/06 Javascript
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
JS中数据结构之栈
2019/01/01 Javascript
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
js常用正则表达式集锦
2019/05/17 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
2019/06/07 Javascript
Vue 中使用富文本编译器wangEditor3的方法
2019/09/26 Javascript
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
python连接mongodb操作数据示例(mongodb数据库配置类)
2013/12/31 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
PyQt5+requests实现车票查询工具
2019/01/21 Python
Django实现web端tailf日志文件功能及实例详解
2019/07/28 Python
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
民政局个人整改措施
2014/09/24 职场文书
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server
python周期任务调度工具Schedule使用详解
2021/11/23 Python