python 实现简易的记事本

2020-12-02 0 285

运行效果

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 实现记事本的资料请关注自学编程网其它相关文章!

遇见资源网 Linux python 实现简易的记事本 http://www.ox520.com/30054.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务