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通过PIL获取图片主要颜色并和颜色库进行对比的方法
Mar 19 Python
python文件写入实例分析
Apr 08 Python
一个基于flask的web应用诞生 组织结构调整(7)
Apr 11 Python
python简易远程控制单线程版
Jun 20 Python
Python 将Matrix、Dict保存到文件的方法
Oct 30 Python
利用nohup来开启python文件的方法
Jan 14 Python
Python匿名函数及应用示例
Apr 09 Python
使用python实现kNN分类算法
Oct 16 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 Python
python修改linux中文件(文件夹)的权限属性操作
Mar 05 Python
理解Django 中Call Stack机制的小Demo
Sep 01 Python
python编写实现抽奖器
Sep 10 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
动态新闻发布的实现及其技巧
2006/10/09 PHP
CI(CodeIgniter)框架介绍
2014/06/09 PHP
php数组键名技巧小结
2015/02/17 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
javascript高亮效果的二种实现方法
2008/09/14 Javascript
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
JavaScript中函数声明优先于变量声明的实例分析
2012/03/01 Javascript
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
2014/01/31 Javascript
jQuery中:selected选择器用法实例
2015/01/04 Javascript
javascript正则表达式总结
2016/02/29 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
BootStrapTable服务器分页实例解析
2016/12/20 Javascript
vue.js的提示组件
2017/03/02 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
2017/04/07 Javascript
深入理解angular2启动项目步骤
2017/07/15 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
Node.js assert断言原理与用法分析
2019/01/04 Javascript
在vue中使用console.log无效的解决
2020/08/09 Javascript
[05:49]2014DOTA2TI4正赛第二日综述 昔日冠军纷纷落马 VG LGD占尽先机
2014/07/20 DOTA
Python解释执行原理分析
2014/08/22 Python
Python实现将一个正整数分解质因数的方法分析
2017/12/14 Python
简单了解python反射机制的一些知识
2019/07/13 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
C#如何允许一个类被继承但是避免这个类的方法被重载?
2015/02/24 面试题
工程造价管理专业大专生求职信
2013/10/06 职场文书
餐厅经理岗位职责范本
2014/02/17 职场文书
供电工程专业求职信
2014/08/09 职场文书
教代会开幕词
2015/01/28 职场文书
电力安全教育培训心得体会
2016/01/11 职场文书
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python