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 相关文章推荐
Django基础之Model操作步骤(介绍)
May 27 Python
python批量设置多个Excel文件页眉页脚的脚本
Mar 14 Python
Python中的十大图像处理工具(小结)
Jun 10 Python
python word转pdf代码实例
Aug 16 Python
python 协程中的迭代器,生成器原理及应用实例详解
Oct 28 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
Nov 05 Python
python利用JMeter测试Tornado的多线程
Jan 12 Python
python+opencv边缘提取与各函数参数解析
Mar 09 Python
Python控制台实现交互式环境执行
Jun 09 Python
什么是python类属性
Jun 10 Python
Python3基于print打印带颜色字符串
Jul 06 Python
Python使用eval函数执行动态标表达式过程详解
Oct 17 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输出多个元素的排列或组合的方法
2017/03/14 PHP
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
2015/06/25 Javascript
jQuery.extend 函数及用法详细
2015/09/06 Javascript
jquery判断输入密码两次是否相等
2020/04/22 Javascript
js css自定义分页效果
2017/02/24 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
2017/05/13 jQuery
JavaScript正则表达式的贪婪匹配和非贪婪匹配
2017/09/05 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
ligerUI---ListBox(列表框可移动的实例)
2017/11/28 Javascript
浅谈React中组件间抽象
2018/01/27 Javascript
vue实现双向绑定和依赖收集遇到的坑
2018/11/29 Javascript
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
vue自定义树状结构图的实现方法
2020/10/18 Javascript
[01:11:15]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python翻译软件实现代码(使用google api完成)
2013/11/26 Python
35个Python编程小技巧
2014/04/01 Python
pandas 将list切分后存入DataFrame中的实例
2018/07/03 Python
通过python将大量文件按修改时间分类的方法
2018/10/17 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
把pandas转换int型为str型的方法
2019/01/29 Python
基于Python的Post请求数据爬取的方法详解
2019/06/14 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
Django模型中字段属性choice使用说明
2020/03/30 Python
浅谈keras.callbacks设置模型保存策略
2020/06/18 Python
python+flask编写一个简单的登录接口
2020/11/13 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
网上开商店的创业计划书
2014/01/19 职场文书
医科大学毕业生自荐信
2014/02/03 职场文书
暑期社会实践方案
2014/02/05 职场文书
献爱心活动总结
2014/05/07 职场文书
答谢词范文
2015/01/05 职场文书
食堂采购员岗位职责
2015/04/03 职场文书
2015年环保局工作总结
2015/05/22 职场文书
Android 中的类文件和类加载器详情
2022/06/05 Java/Android