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程序设计有所帮助。