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 相关文章推荐
Windows下实现Python2和Python3两个版共存的方法
Jun 12 Python
Python正则获取、过滤或者替换HTML标签的方法
Jan 28 Python
python入门基础之用户输入与模块初认识
Nov 14 Python
python实现朴素贝叶斯算法
Nov 19 Python
python构建指数平滑预测模型示例
Nov 21 Python
TensorBoard 计算图的可视化实现
Feb 15 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
Feb 18 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
Jun 11 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
Nov 18 Python
Python+unittest+requests+excel实现接口自动化测试框架
Dec 23 Python
详解Python自动化之文件自动化处理
Jun 21 Python
Python中的 Set 与 dict
Mar 13 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提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
php中函数的形参与实参的问题说明
2010/09/01 PHP
PHP插入排序实现代码
2013/04/04 PHP
php简单实现无限分类树形列表的方法
2015/03/27 PHP
php反射类ReflectionClass用法分析
2016/05/12 PHP
php array_multisort 对数组进行排序详解及实例代码
2016/10/27 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
event.srcElement 用法笔记e.target
2009/12/18 Javascript
jQuery contains过滤器实现精确匹配使用方法
2013/04/12 Javascript
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
js图片延迟加载的实现方法及思路
2013/07/22 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
js控制文本框禁止输入特殊字符详解
2017/04/07 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
javascript中一些奇葩的日期换算方法总结
2018/11/14 Javascript
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
[01:06:54]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第一场 1月24日
2021/03/11 DOTA
Python的Django框架中使用SQLAlchemy操作数据库的教程
2016/06/02 Python
Python中使用asyncio 封装文件读写
2016/09/11 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
Python任意字符串转16, 32, 64进制的方法
2019/06/12 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
2019/06/18 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
Python中logging日志库实例详解
2020/02/19 Python
Python HTTP下载文件并显示下载进度条功能的实现
2020/04/02 Python
全球性的在线购物网站:Zapals
2017/03/22 全球购物
软件测试英文面试题
2012/10/14 面试题
生物化工专业个人自荐信
2013/09/26 职场文书
12.4法制宣传日标语
2014/10/08 职场文书
租车协议书范本2014
2014/11/17 职场文书
党支部鉴定意见
2015/06/02 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL