码迷,mamicode.com
首页 > 编程语言 > 详细

Python开发简单记事本

时间:2015-11-25 22:09:19      阅读:367      评论:0      收藏:0      [点我收藏+]

标签:

摘要:

本文是使用Python,结合Tkinter开发简单记事本。

  本文的操作环境:ubuntu,Python2.7,采用的是Pycharm进行代码编辑,个人很喜欢它的代码自动补齐功能。

  最近很想对python加深学习一下,同时也是想试着做一些东西,今天使用python,结合Tkinter来做一个简单的跨平台记事本。最终实现的记事本如下,也算是麻雀虽小,五脏俱全了,之后也是会继续完善的:

技术分享

 

  如上图,我们可以看到这个记事本主要分为三个模块:文件,编辑和关于,结合我自身的习惯外加四个toolbar:新建、打开、撤销和保存。下来就我个人构建这个记事本做个总结。

一 整体框架构建

1.三个主模块的建立

  首先,我们先建立上图中的三个主模块,同时,在模块中建立各个模块的功能。先以文件为例:下设功能:新建、打开、保存和另存为,代码如下:

#-*-encoding:utf8
from Tkinter import *

root = Tk()
root.title(Benben Node)

#create menu
menubar = Menu(root)
root.config(menu = menubar)

filemenu = Menu(menubar)
filemenu.add_command(label = 新建,accelerator =ctrl + N)
filemenu.add_command(label = 打开,accelerator =ctrl + O)
filemenu.add_command(label = 保存,accelerator =ctrl + S)
filemenu.add_command(label = 另存为,accelerator =ctrl + Shift + s)
menubar.add_cascade(label = 文件,menu = filemenu)

root.mainloop()

运行结果:

技术分享

  我们可以看到一个简单的文件栏就建好了。对应的建立编辑和关于模块。编辑指的是对文本编辑中要使用的模块,下设功能:撤销,重做,复制,剪切,粘贴,查找和全选;关于是下设作者和版权两栏。相应模块对应的代码如下:

#编辑
editmenu = Menu(menubar)
editmenu.add_command(label = 撤销,accelerator = ctrl + z)
editmenu.add_command(label = 重做,accelerator = ctrl + y)
editmenu.add_command(label = 复制,accelerator = ctrl + c)
editmenu.add_command(label = 剪切,accelerator = ctrl + x)
editmenu.add_command(label = 粘贴,accelerator = ctrl + v)
editmenu.add_command(label = 查找,accelerator = ctrl + F)
editmenu.add_command(label = 全选,accelerator = ctrl + A)
menubar.add_cascade(label = 编辑,menu = editmenu)

#关于
aboutmenu = Menu(menubar)
aboutmenu.add_command(label = 作者)
aboutmenu.add_command(label = 版权)
menubar.add_cascade(label = 关于,menu = aboutmenu)

运行结果:

技术分享

 

截图未能得到各个模块对应的功能。

2.toolbar

  在记事本中添加toolbar,添加对应的button并设定合适的间距,对应的代码如下:

#toolbar
toolbar = Frame(root,height = 15,bg = ‘SkyBlue‘)
shortButton = Button(toolbar,text = ‘新建‘,command = open)
shortButton.pack(side = LEFT)
shortButton = Button(toolbar,text = ‘打开‘,command = openfile)
shortButton.pack(side = LEFT,padx = 5,pady = 5)
shortButton = Button(toolbar,text = ‘保存‘,command = save)
shortButton.pack(side = RIGHT)
shortButton = Button(toolbar,text = ‘撤销‘,command = undo)
shortButton.pack(side = RIGHT,padx = 5,pady = 5)
toolbar.pack(expand = NO,fill = X)

技术分享

3.创建状态栏(statusbar)和正文编辑区域

首先在程序中添加:

root = Tk()
root.title(Benben Node)
root.geometry("800x500+100+100")

编辑状态栏的代码:

#statusbar
status = Label(root,text = Ln20,bd = 1,relief = SUNKEN,anchor = w)
status.pack(side = BOTTOM,fill = X)

当然我们还可以建立相应的编辑区域和滚动条,对应的代码如下:

#正文编辑区域
lnlabel = Label(root,width = 2,bg = antique white)
lnlabel.pack(side = LEFT,fill = Y)

textpad = Text(root,undo = True)
textpad.pack(expand = YES,fill = BOTH)

scroll = Scrollbar(textpad)
textpad.config(yscrollcommand = scroll.set)
scroll.config(command = textpad.yview)
scroll.pack(side = RIGHT,fill = Y)

  执行代码,结果:

技术分享

输入相应的可以看到右边界对应的滚动条随输入滚动。

二. 关于模块的实现

  在这三个模块中,关于是最好实现的一个,那就从最简单的开始实现吧。对应的代码如下:

from tkMessageBox import *

#关于
def author():
    showinfo(作者信息,本软件由可爱的奔奔完成)
def about():
    showinfo(版权信息.copyright,版权属于奔奔)

aboutmenu = Menu(menubar)
aboutmenu.add_command(label = 作者,command = author)
aboutmenu.add_command(label = 版权,command = about)
menubar.add_cascade(label = 关于,menu = aboutmenu)

运行结果:

  技术分享   技术分享

三.文件模块的实现

  这部分的实现参见Tkinter官网中的fileDialogs,相应的使用各个方法实现功能:新建、打开、保存和另存为,建立相应的函数实现,代码如下:

#新建
def new():
    root.title(未命名文件)
    filename = None
    textpad.delete(1.0,END)
#打开
def openfile():
    global filename
    filename = askopenfilename(defaultextension = .txt)
    if filename == ‘‘:
        filename = None
    else:
        root.title(FileName:+os.path.basename(filename))
        textpad.delete(1.0,END)
        f = open(filename,r)
        textpad.insert(1.0,f.read())
        f.close()

#保存
def save():
    global filename
    try:
        f = open(filename,w)
        msg = textpad.get(1.0,END)
        f.write(msg)
        f.close()
    except:
        saveas()
#另存为
def saveas():
    f = asksaveasfilename(initialfile= 未命名.txt, defaultextension=.txt)
    global filename
    filename = f
    fh = open(f,w)
    msg = textpad.get(1.0,END)
    fh.write(msg)
    fh.close()
    root.title(FileName:+os.path.basename(f))

  相应的在filemenu和toolbar中加入对应的command,运行结果:

技术分享  技术分享

四 编辑模块的实现

  编辑要实现的功能:撤销,重做,复制,剪切,粘贴,查找和全选,对应的函数代码如下:

def cut():
    textpad.event_generate(<<Cut>>)

def copy():
    textpad.event_generate(<<Copy>>)

def paste():
    textpad.event_generate(<<Paste>>)

def redo():
    textpad.event_generate(<<Redo>>)

def undo():
    textpad.event_generate(<<Undo>>)

def selectAll():
    textpad.tag_add(sel,1.0,END)

def search():
    topsearch = Toplevel(root)
    topsearch.geometry(300x30+200+250)
    label1 = Label(topsearch,text=Find)
    label1.grid(row=0, column=0,padx=5)
    entry1 = Entry(topsearch,width=20)
    entry1.grid(row=0, column=1,padx=5)
    button1 = Button(topsearch,text=查找)
    button1.grid(row=0, column=2)

  同样在editmenu和toolbar中加入对应的command。运行代码,功能实现!快捷键亲测可用~

 

  这算是对此次开发的简单记事本的一个总结,之后有时间也是会添加更多的功能。

 

Python开发简单记事本

标签:

原文地址:http://www.cnblogs.com/ybjourney/p/4995678.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!