####前言:
本文是使用Python,结合Tkinter开发简单记事本。
####基本环境配置:

  • Python版本:2.7
  • 编辑器:pycharm
    ####实现效果:

    ####主要思路:
    我们可以看到这个记事本主要分为三个模块:文件,编辑和关于,结合我自身的习惯外加四个toolbar:新建、打开、撤销和保存。下来就我个人构建这个记事本做个总结。
    ####整体框架构建
    三个主模块的建立
    首先,我们先建立上图中的三个主模块,同时,在模块中建立各个模块的功能。先以文件为例:下设功能:新建、打开、保存和另存为,代码如下:
#-*-encoding:utf8
from Tkinter import *
'''
遇到不懂的问题?Python学习交流群:1136201545满足你的需求,资料都已经上传群文件,可以自行下载!
'''
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
'''
遇到不懂的问题?Python学习交流群:1136201545满足你的需求,资料都已经上传群文件,可以自行下载!
'''
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 *
'''
遇到不懂的问题?Python学习交流群:1136201545满足你的需求,资料都已经上传群文件,可以自行下载!
'''
#关于
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 = Nonetextpad.delete(1.0,END)
#打开
def openfile():global filenamefilename = 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()#保存
def save():global filenametry: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 filenamefilename = ffh = open(f,'w')msg = textpad.get(1.0,END)fh.write(msg)fh.close()root.title('FileName:'+os.path.basename(f))

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


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

'''
遇到不懂的问题?Python学习交流群:1136201545满足你的需求,资料都已经上传群文件,可以自行下载!
'''
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小案例教程1】Python开发简单记事本相关推荐

  1. python编程例子-几个Python小案例,爱上Python编程!

    原标题:几个Python小案例,爱上Python编程! Python是一种面向对象的解释型编程语言,源代码与解释器CPython遵守GPL协议,Python语法简洁清晰. 语法简洁清晰,那么我们用少量 ...

  2. python编程案例-几个Python小案例,爱上Python编程!

    原标题:几个Python小案例,爱上Python编程! Python是一种面向对象的解释型编程语言,源代码与解释器CPython遵守GPL协议,Python语法简洁清晰. 语法简洁清晰,那么我们用少量 ...

  3. python编程案例教程答案-python编程案例教程pdf下载

    python编程案例教程pdf下载内容摘要 python编程案例教程pdf下载教程,巧妙的谋划,巧妙的计谋.娄底电脑教程,巧克力奶茶等都是理想的增肥品.巧克力麦片等等,南宁街舞教程,巧克力成为一种&q ...

  4. python开发实例-几个Python小案例,爱上Python编程!

    每天分享Python教程,多多关注哦 Python是一种面向对象的解释型编程语言,源代码与解释器CPython遵守GPL协议,Python语法简洁清晰. 语法简洁清晰,那么我们用少量的Python代码 ...

  5. 几个Python小案例,爱上Python编程!

    Python是一种面向对象的解释型编程语言,源代码与解释器CPython遵守GPL协议,Python语法简洁清晰. 语法简洁清晰,那么我们用少量的Python代码能做哪些有趣的东西?温馨提示:文末必看 ...

  6. python编程案例教程答案-Python程序开发案例教程

    内容简介 Python是近年来最流行的编程语言之一,其清晰的语法和可读性使其成为初学者的完美编码语言,并且深受编程人员的喜好和追捧. 本书从入门者角度出发,以简洁有趣.通俗易懂的语言讲解了全新的Pyt ...

  7. python编程案例教程书籍-Python程序设计案例教程

    第 1章 入门 1 1.1 Python 的发展历程 1 1.2 为什么使用Python 2 1.3 Python 可以做些什么 4 1.4 Python 的优点 7 1.5 Python 和其他语言 ...

  8. python编程案例教程答案-Python基础案例教程

    一.超市买薯片 # 用户输入薯片的单价 danjia = float(input("薯片的单价")) # 用户输入购买袋数 daishu = int(input("购买的 ...

  9. 用python计算个人所得税税率表,Python 小案例 计算个人所得税

    Python 小案例 计算个人所得税 Python 小案例 计算个人所得税 #coding=utf-8 monthMoney=input("请输入月收入:") ds=3500 #扣 ...

最新文章

  1. 中国人工智能学会通讯——自然语言处理的十个发展趋势 趋势 4: 语言知识——从人工构建到自动构建...
  2. PropertyPathFacoryBean获取对象的值
  3. 微软一站式示例脚本库 — IT专业人士的省时利器
  4. php微信撤回消息,78行Python代码实现现微信撤回消息功能
  5. 做简单的android 软件推荐,Android_适用于Android开发的简单聊天软件,适用于android 开发。是一个简 - phpStudy...
  6. 2014/9/12 play with thesick siyang baby.
  7. python递归求5!_Python | 递归
  8. Python将时长转换为MM:SS格式
  9. 爬虫-请求类对象的创建-Request类
  10. php while for 性能,PHP For While 循环
  11. 橘子皮巧治咳嗽痰多 泡茶喝-转
  12. spring+mybatis通用dao层、service层的实现
  13. 最小采样频率计算公式_【白皮书】多路复用和采样理论
  14. 华为认证hcip怎么找工作?考取华为认证hcip证书可以做什么?
  15. 英语计算机单词怎么记,英语单词快速记忆法
  16. python后端工程师简历_【社招】字节跳动 - 后端开发工程师( Python Golang)-懂车帝...
  17. 服务器间通过ssh使用密钥对实现无密码登录
  18. 【虚幻4/UE4】学习笔记01——软件介绍、安装及界面
  19. ST电机库v5.4.4源代码分析(3): α、β方向的电流值与三相PWM 波形的联系
  20. 【初识Netty使用Netty实现简单的客户端与服务端的通信操作Netty框架中一些重要的类以及方法的解析】

热门文章

  1. 2022/1/14总结
  2. 爱站权重查询 怎么批量查询网站爱站权重
  3. fi选项 电脑没有连接wi_您好,电脑Wi-Fi连接上但是无internet是怎么回事呢
  4. 经典算法之基数排序两种实现
  5. vue-d2admin-axios异步请求登录,先对比一下Jquery ajax, Axios, Fetch区别
  6. 快手直播娱乐公会行业峰会即将启幕 四大举措助力公会强势崛起
  7. leetcode 974
  8. 斐波那契回调线怎么画_自动绘制斐波那契回调线的指标
  9. mysql聚合函数查询,子查询,关联查询
  10. CSC与HPE企业服务合并后新名称公布:DXC Technology