python记事本有哪些_python3写的记事本

from tkinter import *

from tkinter.messagebox import *

from tkinter.filedialog import *

from threading import Timer

import string

#定义一个添加菜单的类,想加什么菜单直接调用即可,副作用是没法加分隔线

class menuNameAccCom:

def __init__(self,menuname,menucom,menuacc):

self.menuname=menuname

self.menuacc=menuacc

self.menucom=menucom

def addmenu(self,wigetName):

for (name,com,acc) in (zip(self.menuname,self.menucom,self.menuacc)):

wigetName.add_command(label=name,accelerator=acc,command=com)

filename=''

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)#delete all

f = open(filename,'r')

textPad.insert(1.0,f.read())

f.close()

def newfile():

global FileName

root.title('new file')

filename = None

textPad.delete(1.0,END)

def savefile():

global filename

try:

f = open(filename,'w')

msg = textPad.get(1.0,END)

f.write(msg)

f.close()

except:

saveas()

def saveas():

global filename

f = asksaveasfilename(initialfile = 'newfile',defaultextension ='.txt')

filename = f

fh = open(f,'w')

msg = textPad.get(1.0,END)

fh.write(msg)

fh.close()

root.title('FileName:'+os.path.basename(f))

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')

labell=Label(topsearch,text='find')

labell.grid(row=0,column=0,padx=5)

entry1=Entry(topsearch,width=28)

entry1.grid(row=0,column=1,padx=5)

button1=Button(topsearch,text='find')

button1.grid(row=0,column=2)

def addButton(name,command):

for (toolname ,toolcom) in zip(name,command):

shortButton = Button(toolbar,text=toolname,relief='groove',command=toolcom)

shortButton.pack(side=LEFT,padx=2,pady=5)

root = Tk()

root.title('Andy Note')

root.geometry('800x500+100+100')

menubar = Menu(root)

root.config(menu= menubar)

#文件菜单

filemenu = Menu(menubar,tearoff=False)

filemenuName = ('New','Open','Save','Save as')

filemenuAcc = ('Ctrl+N','Ctrl+O','Ctrl+S','Ctrl+Shift+S')

filemenuCom = (newfile,openfile,savefile,saveas)

filem = menuNameAccCom(filemenuName,filemenuCom,filemenuAcc)#调用添加菜单的类

filem.addmenu(filemenu)

menubar.add_cascade(label='File',menu=filemenu)

#编辑菜单

editmenu = Menu(menubar,tearoff=False)

editmenuName = ('Undo','Redo','Cut','Copy','Paste','Select All')

editmenuAcc = ('Ctrl+Z','Ctrl+Y','Ctrl+X','Ctrl+C','Ctrl+V','Ctrl+A')

editmenuCom = (undo,redo,cut,copy,paste,selectall)

editm = menuNameAccCom(editmenuName,editmenuCom,editmenuAcc)#调用添加菜单的类

editm.addmenu(editmenu)

menubar.add_cascade(label='Edit',menu=editmenu)

findmenu = Menu(menubar,tearoff=False)

findmenu.add_command(label='Find',accelerator='Ctrl+F',command=search)

menubar.add_cascade(label='Find',menu=findmenu)

#按钮

toolbar = Frame(root,height=20)

toolbarName = ('New','Open','Save','SaveAs','Undo','Redo','Cut','Copy','Paste','SelectAll')

toolbarCommand = (newfile,openfile,savefile,saveas,undo,redo,cut,copy,paste,selectall)

addButton(toolbarName,toolbarCommand) #调用添加按钮的函数

toolbar.pack(fill=X)

# line_number

v1= StringVar()

line =  Label(root, widt=4, font ='consolas', justify=RIGHT, anchor=N, textvariable=v1, text ='1')

line.pack(side=LEFT,fill=Y)

textPad = Text(root,undo=True, font ='consolas')

textPad.pack(expand=YES,fill=BOTH)

textPad.focus_set()

scroll = Scrollbar(textPad)

textPad.config(yscrollcommand=scroll.set)

scroll.config(command=textPad.yview)

scroll.pack(side=RIGHT,fill=Y)

timer_interval = 1

def getline():

global t,row

row,col = textPad.index(INSERT).split('.')

lineNum = 'Ln:  ' +row+'   '+'Co:  '+col

var.set(lineNum)

t = Timer(timer_interval,getline)

t.start()

r,l = textPad.index(END).split('.')

line_n = [str(i)+'\n' for i in range(1, int(r))]

s = ''

for i in line_n:

s = s + i

v1.set(s)

t = Timer(timer_interval,getline)

t.start()

var = StringVar()

status = Label(root,anchor=E,height=1,text='Ln',relief=FLAT,takefocus=False,textvariable=var,padx=2)

status.pack(fill=X)

if __name__ == '__main__':

mainloop()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值