python基于Tkinter库实现简单文本编辑器实例
本文实例讲述了python基于Tkinter库实现简单文本编辑器的方法。分享给大家供大家参考。具体实现方法如下:
##{{{http://code.activestate.com/recipes/578568/(r1)
fromTkinterimport*
fromtkSimpleDialogimportaskstring
fromtkFileDialogimportasksaveasfilename
fromtkMessageBoximportaskokcancel
classQuitter(Frame):
def__init__(self,parent=None):
Frame.__init__(self,parent)
self.pack()
widget=Button(self,text='Quit',command=self.quit)
widget.pack(expand=YES,fill=BOTH,side=LEFT)
defquit(self):
ans=askokcancel('Verifyexit',"Reallyquit?")
ifans:Frame.quit(self)
classScrolledText(Frame):
def__init__(self,parent=None,text='',file=None):
Frame.__init__(self,parent)
self.pack(expand=YES,fill=BOTH)
self.makewidgets()
self.settext(text,file)
defmakewidgets(self):
sbar=Scrollbar(self)
text=Text(self,relief=SUNKEN)
sbar.config(command=text.yview)
text.config(yscrollcommand=sbar.set)
sbar.pack(side=RIGHT,fill=Y)
text.pack(side=LEFT,expand=YES,fill=BOTH)
self.text=text
defsettext(self,text='',file=None):
iffile:
text=open(file,'r').read()
self.text.delete('1.0',END)
self.text.insert('1.0',text)
self.text.mark_set(INSERT,'1.0')
self.text.focus()
defgettext(self):
returnself.text.get('1.0',END+'-1c')
classSimpleEditor(ScrolledText):
def__init__(self,parent=None,file=None):
frm=Frame(parent)
frm.pack(fill=X)
Button(frm,text='Save',command=self.onSave).pack(side=LEFT)
Button(frm,text='Cut',command=self.onCut).pack(side=LEFT)
Button(frm,text='Paste',command=self.onPaste).pack(side=LEFT)
Button(frm,text='Find',command=self.onFind).pack(side=LEFT)
Quitter(frm).pack(side=LEFT)
ScrolledText.__init__(self,parent,file=file)
self.text.config(font=('courier',9,'normal'))
defonSave(self):
filename=asksaveasfilename()
iffilename:
alltext=self.gettext()
open(filename,'w').write(alltext)
defonCut(self):
text=self.text.get(SEL_FIRST,SEL_LAST)
self.text.delete(SEL_FIRST,SEL_LAST)
self.clipboard_clear()
self.clipboard_append(text)
defonPaste(self):
try:
text=self.selection_get(selection='CLIPBOARD')
self.text.insert(INSERT,text)
exceptTclError:
pass
defonFind(self):
target=askstring('SimpleEditor','SearchString?')
iftarget:
where=self.text.search(target,INSERT,END)
ifwhere:
printwhere
pastit=where+('+%dc'%len(target))
#self.text.tag_remove(SEL,'1.0',END)
self.text.tag_add(SEL,where,pastit)
self.text.mark_set(INSERT,pastit)
self.text.see(INSERT)
self.text.focus()
if__name__=='__main__':
try:
SimpleEditor(file=sys.argv[1]).mainloop()
exceptIndexError:
SimpleEditor().mainloop()
希望本文所述对大家的Python程序设计有所帮助。