记事本写python怎么运行-利用Python开发实现简单的记事本

前言

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

示例图

141H913M-0.png

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

下来就我个人构建这个记事本做个总结。

一、整体框架构建

1.三个主模块的建立

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#-*-encoding:utf8

from Tkinterimport *

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()

运行结果:

141HaT8-1.png

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#编辑

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)

运行结果:

141H96204-2.png

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

2.toolbar

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

?

1

2

3

4

5

6

7

8

9

10

11

#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)

141H922L-3.png

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

首先在程序中添加:

?

1

2

3

root= Tk()

root.title('Benben Node')

root.geometry("800x500+100+100")

编辑状态栏的代码:

?

1

2

3

#statusbar

status= Label(root,text= 'Ln20',bd= 1,relief= SUNKEN,anchor= 'w')

status.pack(side= BOTTOM,fill= X)

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

?

1

2

3

4

5

6

7

8

9

10

11

#正文编辑区域

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)

执行代码,结果:

141H93L8-4.png

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

二、关于模块的实现

在这三个模块中,关于是最好实现的一个,那就从最简单的开始实现吧。

对应的代码如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

from tkMessageBoximport *

#关于

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)

运行结果:

141H92424-5.png   

141H954U-6.png

三、文件模块的实现

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

#新建

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

141H93338-7.png  

141H95X8-8.png

四、编辑模块的实现

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

def cut():

textpad.event_generate('<>')

def copy():

textpad.event_generate('<>')

def paste():

textpad.event_generate('<>')

def redo():

textpad.event_generate('<>')

def undo():

textpad.event_generate('<>')

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

总结

以上就是这篇文中的全部内容了,这算是对此次开发的简单记事本的一个总结,之后有时间也是会添加更多的功能。希望本文的内容对大家的学习或者工作能带来一定的帮助,如果疑问大家可以留言交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值