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多线程编程中的join函数使用心得
Sep 02 Python
Python中的闭包详细介绍和实例
Nov 21 Python
pygame学习笔记(1):矩形、圆型画图实例
Apr 15 Python
python使用邻接矩阵构造图代码示例
Nov 10 Python
基于Python实现的ID3决策树功能示例
Jan 02 Python
Django中的CBV和FBV示例介绍
Feb 25 Python
Python寻找路径和查找文件路径的示例
Jul 10 Python
python虚拟环境完美部署教程
Aug 06 Python
Python中的sys.stdout.write实现打印刷新功能
Feb 21 Python
基于Tensorflow的MNIST手写数字识别分类
Jun 17 Python
django美化后台django-suit的安装配置操作
Jul 12 Python
Python爬取某拍短视频
Jun 11 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购物网站支付paypal使用方法
2010/11/28 PHP
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
laravel5.2表单验证,并显示错误信息的实例
2019/09/29 PHP
js滚动条多种样式,推荐
2007/02/05 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
js动态创建标签示例代码
2014/06/09 Javascript
php读取sqlite数据库入门实例代码
2014/06/25 Javascript
js实现select下拉框菜单
2015/12/08 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
2016/11/25 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
详解Vue 方法与事件处理器
2017/06/20 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
2017/08/29 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
Bootstrap-table自定义可编辑每页显示记录数
2018/09/07 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
2019/09/28 Javascript
Vue实现背景更换颜色操作
2020/07/17 Javascript
Python获取Windows或Linux主机名称通用函数分享
2014/11/22 Python
Python批量创建迅雷任务及创建多个文件
2016/02/13 Python
分析python请求数据
2018/08/19 Python
python+os根据文件名自动生成文本
2019/03/21 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
2016/12/15 HTML / CSS
德国健康生活方式网上商店:Landkaufhaus Mayer
2019/03/12 全球购物
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
汽车维修专业个人求职信范文
2014/01/01 职场文书
项目开发计划书
2014/01/09 职场文书
小学生安全保证书
2014/02/01 职场文书
市场部管理制度
2014/02/02 职场文书
2014国培学习感言
2014/03/05 职场文书
媒体宣传策划方案
2014/05/25 职场文书
企业法人授权委托书
2014/09/25 职场文书
普通员工辞职信范文
2015/05/12 职场文书