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 time模块详解(常用函数实例讲解,非常好)
Apr 24 Python
在Python中关于中文编码问题的处理建议
Apr 08 Python
Python使用dis模块把Python反编译为字节码的用法详解
Jun 14 Python
安装Python的教程-Windows
Jul 22 Python
opencv改变imshow窗口大小,窗口位置的方法
Apr 02 Python
python 剪切移动文件的实现代码
Aug 02 Python
如何基于python实现归一化处理
Jan 20 Python
Pycharm导入anaconda环境的教程图解
Jul 31 Python
Python selenium爬取微信公众号文章代码详解
Aug 12 Python
如何用 Python 制作 GitHub 消息助手
Feb 20 Python
浅谈Python xlwings 读取Excel文件的正确姿势
Feb 26 Python
python使用pycharm安装pyqt5以及相关配置
Apr 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 include,include_once,require,require_once
2008/09/05 PHP
phplock(php进程锁) v1.0 beta1
2009/11/24 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
php设计模式之适配器模式原理、用法及注意事项详解
2019/09/24 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
jquery控制listbox中项的移动并排序
2009/11/12 Javascript
Javascript实现页面跳转的几种方式分享
2013/10/26 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
javascript中call,apply,bind的用法对比分析
2015/02/12 Javascript
Javascript实现快速排序(Quicksort)的算法详解
2015/09/06 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
2015/11/23 Javascript
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
浅析javascript的return语句
2015/12/15 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
JavaScript严格模式详解
2017/01/16 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
JavaScript实现百度搜索框效果
2020/03/26 Javascript
微信小程序在其他页面监听globalData中值的变化
2019/07/15 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
2019/11/19 Javascript
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
详解Python nose单元测试框架的安装与使用
2017/12/20 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
Python如何执行精确的浮点数运算
2020/07/31 Python
KLOOK客路:发现更好玩的世界,预订独一无二的旅行体验
2016/12/16 全球购物
LN-CC中国:高端男装和女装的奢侈时尚目的地
2019/09/14 全球购物
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
建筑专业自我鉴定
2013/10/22 职场文书
pandas中DataFrame重置索引的几种方法
2021/05/24 Python