前言

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

示例图

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

运行结果:

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

?

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)

运行结果:

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

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)

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)

执行代码,结果:

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

二、关于模块的实现

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

对应的代码如下:

?

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)

运行结果:

   

三、文件模块的实现

这部分的实现参见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,运行结果:

  

四、编辑模块的实现

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

?

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

总结

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

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

  1. 怎么用python编写记事本_利用Python开发实现简单的记事本

    利用Python开发实现简单的记事本 最近想对 python 加深学习一下,同时也是想试着做一些东西,所以使用 python, 结合 Tkinter 来做一个简单的跨平台记事本.最终实现的记事本如下, ...

  2. python从外部传入参数_从另一个Python脚本运行一个Python脚本,并传入参数 - python...

    我想从另一个Python脚本运行一个Python脚本.我想像使用命令行一样传递变量. 例如,我将运行我的第一个脚本,该脚本将遍历值列表(0.1.2.3),并将其传递给第二个脚本,依次为script2. ...

  3. 【Python例】利用 python 进行图片文字信息的提取 --- OCR-EasyOCR

    [Python例]利用 python 进行图片文字信息的提取 - OCR-EasyOCR 本文主要用于记录,并使用 python 脚本进行图片文字信息的生成. 什么是 OCR? OCR OCR(Opt ...

  4. 【Python例】利用 python 进行用户画像词云图的生成 --- wordcloud

    [Python例]利用 python 进行用户画像词云图的生成 - wordcloud 本文主要用于记录,并使用 python 脚本进行用户画像的词云图的生成. 前言 对于词云图来说,是一个用户画像数 ...

  5. boxplot用法 python,[Python画图笔记]利用Python画箱型图boxplot

    [Python画图笔记]利用Python画箱型图boxplot [Python画图笔记]利用Python画箱型图boxplot 最近在学习使用Python画图,想用subplot画两幅箱型图,分别用来 ...

  6. 记事本如何运行python代码_利用Python开发实现简单的记事本

    前言 本文的操作环境:ubuntu,Python2.7,采用的是Pycharm进行代码编辑,个人很喜欢它的代码自动补齐功能. 示例图 如上图,我们可以看到这个记事本主要分为三个模块:文件,编辑和关于, ...

  7. 用python怎么赚钱-利用python能怎么挣钱

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 6年python,期间写了各种奇葩爬虫,挣各种奇葩的钱,写这篇文章总结下几种爬虫挣 ...

  8. 怎么用python挣钱-怎么利用python赚钱

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 渠道一:淘宝搜python程序可以到淘宝上搜,python程序,到相应的店里找客服 ...

  9. 如何用python赚钱_利用python能怎么挣钱

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 6年python,期间写了各种奇葩爬虫,挣各种奇葩的钱,写这篇文章总结下几种爬虫 ...

最新文章

  1. 去除inline-block元素间距
  2. Python---读图(glob读取图片文件列表)
  3. (转)android 在电脑上显示真机屏幕
  4. 以太坊和Metamask开发web应用时不再需要密码
  5. iphone有什么软件可以修改html,现在iPhone组装机太可怕,修改数据即可变原装?...
  6. 用Python进行数据探索,探索竞赛优胜方案
  7. java json 返回null,[] Spring4 MVC 返回json格式时候 设置不返回null值属性的有关问题...
  8. java程序启动后就进行了7次younggc_程序员如何优化 Java GC
  9. Spring使用JDBC访问MySQL数据库
  10. C++OpenCV:三角形插值、线面的交点
  11. ajax一步调用,ajax异步调用
  12. JavaScript创建对象的三种方式之利用构造函数创建对象及使用方法(3)
  13. 《Tomcat权威指南》读书笔记
  14. Android URLEncoder和URLDecoder
  15. 小程序毕设作品之微信酒店预订小程序毕业设计(6)开题答辩PPT
  16. 2011年11月份第二周51Aspx源码发布详情
  17. android 开机自动运行脚本,安卓设置脚本开机自启动
  18. 批处理删除文件文件夹相关指令
  19. 跨平台的会员通 打通品牌任督二脉
  20. 5 位改变世界的女性程序员

热门文章

  1. Java类加载机制:双亲委托模型
  2. 递归神经网络——就是解决AST这样的问题
  3. EM算法——有隐含变量时,极大似然用梯度法搞不定只好来猜隐含变量期望值求max值了...
  4. HashTree(哈希树) ——和trie类似,只是将字符换成了质数,sphinx用到了???...
  5. flask gevent uwsgi nginx 联合高并发 部署
  6. linux下安装nginx、python、django
  7. pom.xml常用元素解析
  8. CS294-112 深度强化学习 秋季学期(伯克利)NO.3 Reinforcement learning introduction
  9. 支付宝分库分表中间件--zdal简介
  10. Windows 系统安装Docker Compose 步骤