python 实现简易的记事本


Posted in Python onNovember 30, 2020

运行效果

python 实现简易的记事本

完整代码

from tkinter import *
from tkinter.filedialog import *
from tkinter.messagebox import *
import os
filename=''
def author():
  showinfo('大道至简','简易记事本第一版')

def power():
  showinfo('版权信息','本公司保留版权信息,不可以把本软件用于商业目的!')
def myopen():
  global filename
  filename=askopenfilename(defaultextension='.txt')
  if filename=='':
    filename=None
  else:
    root.title('简易记事本'+os.path.basename(filename))
    textPad.delete(1.0,END)
    f=open(filename,'r')
    textPad.insert(1.0,f.read())
    f.close()


def new():
  global root,filename,textPad
  root.title('未命名文件')
  filename=None
  textPad.delete(1.0,END)

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=asksaveasfile(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('简易记事本'+os.path.basename(f))
def cut():
  global textPad
  textPad.event_generate('<<Cut>>')
def copy():
  global textPad
  textPad.event_generate('<<Copy>>')
def paste():
  global textPad
  textPad.event_generate('<<Paste>>')


def undo():
  global textPad
  textPad.event_generate('<<Undo>>')
def redo():
  global textPad
  textPad.event_generate('<<Redo>>')
def select_all():
  global textPad
  textPad.tag_add('sel','1.0','end')
def find():
  global root
  t=Toplevel(root)
  t.title('查找')
  t.geometry('260x60+200+250')
  t.transient(root)
  Label(t,text='查找:').grid(row=0,column=0,sticky='e')
  v=StringVar()
  e=Entry(t,width=20,textvariable=v)
  e.grid(row=0,column=1,padx=2,pady=2,sticky='we')
  e.focus_set()
  c=IntVar()
  Checkbutton(t,text='不区分大小写',variabel=c).grid(row=1,column=1,sticky='e')
  Button(t,text='查找所有',command=lambda :search(v.get(),c.get(),textPad,t,e)).grid(row=0,
    column=2,sticky='e'+'w',padx=2,pady=2)
def close_search():
  textPad.tag_remove('match','1.0',END)
  t.destroy()
  t.protocol('WM_DELETE_WINDOW',close_search)#???

def search(needle,cssnstv,textPad,t,e):
  textPad.tag_remove('match','1.0',END)
  count=0
  if needle:
    pos='1.0'
    while True:
      pos=textPad.search(needle,pos,nocase=cssnstv,stopindex=END)
      if not pos:break
      lastpos=pos+str(len(needle))
      textPad.tag_add('match',pos,lastpos)
      count+=1
      pos=lastpos
    textPad.tag_config('match',foreground='yellow',background='green')
    e.focus_set()
    t.title(str(count)+'个被匹配')

def popup(event):
  global editmenu
  editmenu.tk_popup(event.x_root,event.y_root)
root=Tk()
root.title('简易记事本第一版')
root.geometry('300x300+100+100')#geometry(wxh+xoffset+yoffset)
menubar=Menu(root)#制作菜单实例,依附于父窗口root上面

filemenu=Menu(menubar)#制作文件菜单项,依附于menubar菜单上面
menubar.add_cascade(label='文件',menu=filemenu)#增加分层菜单
filemenu.add_command(label='新建',accelerator='Ctrl+N',command=new)
filemenu.add_command(label='打开',accelerator='Ctrl+O',command=myopen)
filemenu.add_command(label='保存',accelerator='Ctrl+S',command=save)
filemenu.add_command(label='另存为',accelerator='Ctrl+Alt+S',command=saveas)

editmenu=Menu(menubar)#制作编辑菜单项,依附于menubar菜单上面
menubar.add_cascade(label='编辑',menu=editmenu)
editmenu.add_command(label='撤销',accelerator='Ctrl+Z',command=undo)
editmenu.add_command(label='重做',accelerator='Ctrl+Y',command=redo)
editmenu.add_command(label='剪切',accelerator='Ctrl+X',command=cut)
editmenu.add_command(label='复制',accelerator='Ctrl+C',command=copy)
editmenu.add_command(label='粘贴',accelerator='Ctrl+V',command=paste)
editmenu.add_separator()
editmenu.add_command(label='查找',accelerator='Ctrl+F',command=find)
editmenu.add_command(label='全选',accelerator='Ctrl+A',command=select_all)

aboutmenu=Menu(menubar)#制作关于菜单项,依附于menubar菜单上面
menubar.add_cascade(label='关于',menu=aboutmenu)#增加分层菜单
aboutmenu.add_command(label='作者',command=author)
aboutmenu.add_command(label='版权',command=power)
root.config(menu=menubar)
shortcutbar=Frame(root,height=25,bg='light sea green')
shortcutbar.pack(expand=NO,fill=X)
Inlabel=Label(root,width=2,bg='antique white')
Inlabel.pack(side=LEFT,anchor='nw',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)

textPad.bind('<Control-N>',new)
textPad.bind('<Control-n>',new)
textPad.bind('<Control-O>',myopen)
textPad.bind('<Control-o>',myopen)
textPad.bind('<Control-S>',save)
textPad.bind('<Control-s>',save)
textPad.bind('<Control-A>',select_all)
textPad.bind('<Control-a>',select_all)
textPad.bind('<Control-f>',find)
textPad.bind('<Control-F>',find)
textPad.bind('<Control-3>',popup)

root.mainloop()

以上就是python 实现简易的记事本的详细内容,更多关于python 实现记事本的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
初步介绍Python中的pydoc模块和distutils模块
Apr 13 Python
Python中为什么要用self探讨
Apr 14 Python
Python socket编程实例详解
May 27 Python
Python基于matplotlib绘制栈式直方图的方法示例
Aug 09 Python
Python实现将HTML转换成doc格式文件的方法示例
Nov 20 Python
tensorflow入门之训练简单的神经网络方法
Feb 26 Python
win10系统下Anaconda3安装配置方法图文教程
Sep 19 Python
Python 控制终端输出文字的实例
Jul 12 Python
python中的subprocess.Popen()使用详解
Dec 25 Python
python+selenium实现12306模拟登录的步骤
Jan 21 Python
python tkinter实现定时关机
Apr 21 Python
Python 循环读取数据内存不足的解决方案
May 25 Python
详解pycharm自动import所需的库的操作方法
Nov 30 #Python
Django REST Framework 分页(Pagination)详解
Nov 30 #Python
python代码实现猜拳小游戏
Nov 30 #Python
Django 权限管理(permissions)与用户组(group)详解
Nov 30 #Python
python 如何引入协程和原理分析
Nov 30 #Python
Django缓存Cache使用详解
Nov 30 #Python
Django框架实现在线考试系统的示例代码
Nov 30 #Python
You might like
PHP制作图型计数器的例子
2006/10/09 PHP
php 模拟get_headers函数的代码示例
2013/04/27 PHP
PHP页面实现定时跳转的方法
2014/10/31 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
JavaScript 内置对象属性及方法集合
2010/07/04 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
使用Ajax生成的Excel文件并下载的实例
2016/11/21 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
AngularJS Controller作用域
2017/01/09 Javascript
微信小程序学习之数据处理详解
2017/07/05 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
html-webpack-plugin修改页面的title的方法
2020/06/18 Javascript
Python文件操作类操作实例详解
2014/07/11 Python
从Python的源码来解析Python下的freeblock
2015/05/11 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
使用matplotlib画散点图的方法
2018/05/25 Python
python读csv文件时指定行为表头或无表头的方法
2019/06/26 Python
Python 字符串类型列表转换成真正列表类型过程解析
2019/08/26 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
Python3 A*寻路算法实现方式
2019/12/24 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
基于TensorBoard中graph模块图结构分析
2020/02/15 Python
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
大学生农村教师实习自我鉴定
2013/09/21 职场文书
少年闰土教学反思
2014/02/22 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
导游词之青岛崂山
2019/12/27 职场文书
详解Redis实现限流的三种方式
2021/04/27 Redis
在CSS中使用when/else的方法
2022/01/18 HTML / CSS
详解nginx安装过程并代理下载服务器文件
2022/02/12 Servers
MySQL事务操作的四大特性以及并发事务问题
2022/04/12 MySQL