用python编写最简单的记事本_Python开发简单记事本

标签:

摘要:

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

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

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

20180110172726716844.png

如上图,我们可以看到这个记事本主要分为三个模块:文件,编辑和关于,结合我自身的习惯外加四个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()

运行结果:

20180110172726720750.png

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

#编辑

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)

运行结果:

20180110172726722703.png

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

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)

20180110172726723680.png

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)

执行代码,结果:

20180110172726725633.png

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

二. 关于模块的实现

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

from tkMessageBox import *

#关于

defauthor():

showinfo(‘作者信息‘,‘本软件由可爱的奔奔完成‘)defabout():

showinfo(‘版权信息.copyright‘,‘版权属于奔奔‘)

aboutmenu=Menu(menubar)

aboutmenu.add_command(label= ‘作者‘,command =author)

aboutmenu.add_command(label= ‘版权‘,command =about)

menubar.add_cascade(label= ‘关于‘,menu = aboutmenu)

运行结果:

20180110172726728562.png   

20180110172726729539.png

三.文件模块的实现

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

#新建

defnew():

root.title(‘未命名文件‘)

filename=None

textpad.delete(1.0,END)#打开

defopenfile():globalfilename

filename= askopenfilename(defaultextension = ‘.txt‘)if filename == ‘‘:

filename=Noneelse:

root.title(‘FileName:‘+os.path.basename(filename))

textpad.delete(1.0,END)

f= open(filename,‘r‘)

textpad.insert(1.0,f.read())

f.close()

#保存

defsave():globalfilenametry:

f= open(filename,‘w‘)

msg= textpad.get(1.0,END)

f.write(msg)

f.close()except:

saveas()#另存为

defsaveas():

f= asksaveasfilename(initialfile= ‘未命名.txt‘, defaultextension=‘.txt‘)globalfilename

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,运行结果:

20180110172726732468.png  

20180110172726733445.png

四 编辑模块的实现

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

defcut():

textpad.event_generate(‘<>‘)defcopy():

textpad.event_generate(‘<>‘)defpaste():

textpad.event_generate(‘<>‘)defredo():

textpad.event_generate(‘<>‘)defundo():

textpad.event_generate(‘<>‘)defselectAll():

textpad.tag_add(‘sel‘,‘1.0‘,END)defsearch():

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。运行代码,功能实现!快捷键亲测可用~

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

标签:

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值