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编程之微信推送模板消息功能示例
Aug 21 Python
在Python web中实现验证码图片代码分享
Nov 09 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
Apr 18 Python
Pytorch中accuracy和loss的计算知识点总结
Sep 10 Python
python Tensor和Array对比分析
Jan 08 Python
Python多线程多进程实例对比解析
Mar 12 Python
对python中list的五种查找方法说明
Jul 13 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
Oct 16 Python
基于django和dropzone.js实现上传文件
Nov 24 Python
Python中的min及返回最小值索引的操作
May 10 Python
Python 快速验证代理IP是否有效的方法实现
Jul 15 Python
Python中异常处理用法
Nov 27 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文件上传的例子及参数详解
2013/12/12 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
2014/12/16 PHP
phpQuery让php处理html代码像jQuery一样方便
2015/01/06 PHP
PHP邮件群发机实现代码
2016/02/16 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
JQuery中each()的使用方法说明
2010/08/19 Javascript
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
用jquery设置按钮的disabled属性的实现代码
2010/11/28 Javascript
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
2016/11/11 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
RequireJS用法简单示例
2018/08/20 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
2019/09/14 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
python抓取网页中图片并保存到本地
2015/12/01 Python
django缓存配置的几种方法详解
2018/07/16 Python
python 追踪except信息方式
2020/04/25 Python
python db类用法说明
2020/07/07 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
2020/08/04 Python
如何用Django处理gzip数据流
2021/01/29 Python
CSS3中的@keyframes关键帧动画的选择器绑定
2016/06/13 HTML / CSS
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
Sneaker Studio法国:购买运动鞋
2018/06/08 全球购物
大学生学习2014年全国两会心得体会
2014/03/12 职场文书
2014年预备党员学习两会心得体会
2014/03/17 职场文书
机关干部个人对照检查材料思想汇报
2014/09/28 职场文书
大学生学生会工作总结2015
2015/05/26 职场文书
环保建议书作文500字
2015/09/14 职场文书
OpenCV全景图像拼接的实现示例
2021/06/05 Python