记事本写python怎么运行-利用Python开发实现简单的记事本
前言
本文的操作环境: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开发实现简单的记事本相关推荐
- 怎么用python编写记事本_利用Python开发实现简单的记事本
利用Python开发实现简单的记事本 最近想对 python 加深学习一下,同时也是想试着做一些东西,所以使用 python, 结合 Tkinter 来做一个简单的跨平台记事本.最终实现的记事本如下, ...
- python从外部传入参数_从另一个Python脚本运行一个Python脚本,并传入参数 - python...
我想从另一个Python脚本运行一个Python脚本.我想像使用命令行一样传递变量. 例如,我将运行我的第一个脚本,该脚本将遍历值列表(0.1.2.3),并将其传递给第二个脚本,依次为script2. ...
- 【Python例】利用 python 进行图片文字信息的提取 --- OCR-EasyOCR
[Python例]利用 python 进行图片文字信息的提取 - OCR-EasyOCR 本文主要用于记录,并使用 python 脚本进行图片文字信息的生成. 什么是 OCR? OCR OCR(Opt ...
- 【Python例】利用 python 进行用户画像词云图的生成 --- wordcloud
[Python例]利用 python 进行用户画像词云图的生成 - wordcloud 本文主要用于记录,并使用 python 脚本进行用户画像的词云图的生成. 前言 对于词云图来说,是一个用户画像数 ...
- boxplot用法 python,[Python画图笔记]利用Python画箱型图boxplot
[Python画图笔记]利用Python画箱型图boxplot [Python画图笔记]利用Python画箱型图boxplot 最近在学习使用Python画图,想用subplot画两幅箱型图,分别用来 ...
- 记事本如何运行python代码_利用Python开发实现简单的记事本
前言 本文的操作环境:ubuntu,Python2.7,采用的是Pycharm进行代码编辑,个人很喜欢它的代码自动补齐功能. 示例图 如上图,我们可以看到这个记事本主要分为三个模块:文件,编辑和关于, ...
- 用python怎么赚钱-利用python能怎么挣钱
广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 6年python,期间写了各种奇葩爬虫,挣各种奇葩的钱,写这篇文章总结下几种爬虫挣 ...
- 怎么用python挣钱-怎么利用python赚钱
广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 渠道一:淘宝搜python程序可以到淘宝上搜,python程序,到相应的店里找客服 ...
- 如何用python赚钱_利用python能怎么挣钱
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 6年python,期间写了各种奇葩爬虫,挣各种奇葩的钱,写这篇文章总结下几种爬虫 ...
最新文章
- 去除inline-block元素间距
- Python---读图(glob读取图片文件列表)
- (转)android 在电脑上显示真机屏幕
- 以太坊和Metamask开发web应用时不再需要密码
- iphone有什么软件可以修改html,现在iPhone组装机太可怕,修改数据即可变原装?...
- 用Python进行数据探索,探索竞赛优胜方案
- java json 返回null,[] Spring4 MVC 返回json格式时候 设置不返回null值属性的有关问题...
- java程序启动后就进行了7次younggc_程序员如何优化 Java GC
- Spring使用JDBC访问MySQL数据库
- C++OpenCV:三角形插值、线面的交点
- ajax一步调用,ajax异步调用
- JavaScript创建对象的三种方式之利用构造函数创建对象及使用方法(3)
- 《Tomcat权威指南》读书笔记
- Android URLEncoder和URLDecoder
- 小程序毕设作品之微信酒店预订小程序毕业设计(6)开题答辩PPT
- 2011年11月份第二周51Aspx源码发布详情
- android 开机自动运行脚本,安卓设置脚本开机自启动
- 批处理删除文件文件夹相关指令
- 跨平台的会员通 打通品牌任督二脉
- 5 位改变世界的女性程序员
热门文章
- Java类加载机制:双亲委托模型
- 递归神经网络——就是解决AST这样的问题
- EM算法——有隐含变量时,极大似然用梯度法搞不定只好来猜隐含变量期望值求max值了...
- HashTree(哈希树) ——和trie类似,只是将字符换成了质数,sphinx用到了???...
- flask gevent uwsgi nginx 联合高并发 部署
- linux下安装nginx、python、django
- pom.xml常用元素解析
- CS294-112 深度强化学习 秋季学期(伯克利)NO.3 Reinforcement learning introduction
- 支付宝分库分表中间件--zdal简介
- Windows 系统安装Docker Compose 步骤