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 29 Python
python使用Image处理图片常用技巧分析
Jun 01 Python
Python的Scrapy爬虫框架简单学习笔记
Jan 20 Python
使用python的pexpect模块,实现远程免密登录的示例
Feb 14 Python
使用python来调用CAN通讯的DLL实现方法
Jul 03 Python
python爬虫 urllib模块反爬虫机制UA详解
Aug 20 Python
详解numpy矩阵的创建与数据类型
Oct 18 Python
Python彻底删除文件夹及其子文件方式
Dec 23 Python
Numpy中ndim、shape、dtype、astype的用法详解
Jun 14 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
Jun 17 Python
Python改变对象的字符串显示的方法
Aug 01 Python
聊聊python中的循环遍历
Sep 07 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仿ZOL分页类代码
2008/10/02 PHP
PHP支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
php开发时容易忘记的一些技术细节
2016/02/03 PHP
filters.revealTrans.Transition使用方法小结
2010/08/19 Javascript
javascript 闭包疑问
2010/12/30 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
2011/09/27 Javascript
Js base64 加密解密介绍
2013/10/11 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
2013/10/25 Javascript
JS替换文本域内的回车示例
2014/02/18 Javascript
js中的caller和callee属性介绍和例子
2014/06/07 Javascript
Javascript冒泡排序算法详解
2014/12/03 Javascript
jquery实现textarea输入框限制字数的方法
2015/01/15 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
2015/03/18 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
2015/06/10 Javascript
详解AngularJS中自定义过滤器
2015/12/28 Javascript
Easyui form combobox省市区三级联动
2016/01/13 Javascript
Node.js+Express配置入门教程
2016/05/19 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
js实现验证码功能
2020/07/24 Javascript
vue-cli+webpack项目打包到服务器后,ttf字体找不到的解决操作
2020/08/28 Javascript
js制作提示框插件
2020/12/24 Javascript
[37:02]OG vs INfamous 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python获取指定路径下所有指定后缀文件的方法
2015/05/26 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
python之virtualenv的简单使用方法(必看篇)
2017/11/25 Python
详解python string类型 bytes类型 bytearray类型
2017/12/16 Python
浅谈python配置与使用OpenCV踩的一些坑
2018/04/02 Python
python中使用print输出中文的方法
2018/07/16 Python
HTML5 embed标签定义和用法详解
2014/05/09 HTML / CSS
美国摄影爱好者购物网站:Focus Camera
2016/10/21 全球购物
个人求职信范例
2014/01/29 职场文书
大学第二课堂活动总结
2014/07/08 职场文书
作风建设整改方案
2014/10/27 职场文书
英语辞职信怎么写
2015/02/28 职场文书
2015年党务公开工作总结
2015/05/19 职场文书
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL