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 相关文章推荐
centos 下面安装python2.7 +pip +mysqld
Nov 18 Python
简单理解Python中基于生成器的状态机
Apr 13 Python
Python中的深拷贝和浅拷贝详解
Jun 03 Python
Python实现遍历目录的方法【测试可用】
Mar 22 Python
Python实现简单文本字符串处理的方法
Jan 22 Python
PyQt5每天必学之进度条效果
Apr 19 Python
使用Django开发简单接口实现文章增删改查
May 09 Python
python 爬取学信网登录页面的例子
Aug 13 Python
pygame实现烟雨蒙蒙下彩虹雨
Nov 11 Python
python中seaborn包常用图形使用详解
Nov 25 Python
用 python 进行微信好友信息分析
Nov 28 Python
解决Pytorch中关于model.eval的问题
May 22 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+MySQL的聊天室设计
2006/10/09 PHP
分享php邮件管理器源码
2016/01/06 PHP
PHP中session跨子域的三种实现方法
2016/07/25 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
PHP 实现缩略图
2021/03/09 PHP
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
跨浏览器的事件对象介绍
2012/06/27 Javascript
图片无缝滚动代码(向左/向下/向上)
2013/04/10 Javascript
jquery插件validate验证的小例子
2013/05/08 Javascript
JS模拟自动点击的简单实例
2013/08/08 Javascript
禁止IE用右键的JS代码
2013/12/30 Javascript
jquery实现的Accordion折叠面板效果代码
2015/09/02 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
2016/01/26 Javascript
AngularJS 服务详细讲解及示例代码
2016/08/17 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
原生javascript如何实现共享onload事件
2020/07/03 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
如何正确解决VuePress本地访问出现资源报错404的问题
2020/12/03 Vue.js
python类继承用法实例分析
2015/05/27 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
用Python实现数据的透视表的方法
2018/11/16 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
Python读取JSON数据操作实例解析
2020/05/18 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
财务会计专业推荐信
2013/11/30 职场文书
SQL中的连接查询详解
2022/06/21 SQL Server