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计算圆周长、面积、球体体积并画出圆
Apr 08 Python
Python 3.x 连接数据库示例(pymysql 方式)
Jan 19 Python
浅谈python 线程池threadpool之实现
Nov 17 Python
pandas中Timestamp类用法详解
Dec 11 Python
Python带动态参数功能的sqlite工具类
May 26 Python
Python BS4库的安装与使用详解
Aug 08 Python
python实现复制大量文件功能
Aug 31 Python
linux 下selenium chrome使用详解
Apr 02 Python
使用Python内置模块与函数进行不同进制的数的转换
Apr 26 Python
PyTorch-GPU加速实例
Jun 23 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
Sep 24 Python
10个示例带你掌握python中的元组
Nov 23 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
YII中assets的使用示例
2014/07/31 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
使用隐藏的new来创建对象
2011/03/29 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
2014/06/24 Javascript
jquery中change()用法实例分析
2015/02/06 Javascript
js的各种排序算法实现(总结)
2016/07/23 Javascript
详解vuejs之v-for列表渲染
2017/06/22 Javascript
js构造函数创建对象是否加new问题
2018/01/22 Javascript
Vue中的v-for循环key属性注意事项小结
2018/08/12 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
2018/10/08 Javascript
echarts多条折线图动态分层的实现方法
2019/05/24 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
Python代码实现KNN算法
2017/12/20 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
2018/04/10 Python
Python 字符串类型列表转换成真正列表类型过程解析
2019/08/26 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
jupyter notebook 多行输出实例
2020/04/09 Python
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
印度首选时尚目的地:Reliance Trends
2018/01/17 全球购物
Tomcat中怎么使用log4j输出所有的log
2016/07/07 面试题
汽车驾驶求职信
2013/10/25 职场文书
夜班门卫岗位职责
2013/12/09 职场文书
函授大学生自我鉴定
2014/02/05 职场文书
初一学生期末评语
2014/04/24 职场文书
小学生倡议书范文
2014/05/13 职场文书
记账会计岗位职责
2014/06/16 职场文书
英文演讲稿开场白
2014/08/25 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
教师三严三实对照检查材料
2014/09/25 职场文书
《唯一的听众》教学反思
2016/02/18 职场文书
MySql分区类型及创建分区的方法
2022/04/13 MySQL