首页 > 编程 > Python > 正文

python基于Tkinter库实现简单文本编辑器实例

2019-11-25 17:32:40
字体:
来源:转载
供稿:网友

本文实例讲述了python基于Tkinter库实现简单文本编辑器的方法。分享给大家供大家参考。具体实现方法如下:

## {{{ http://code.activestate.com/recipes/578568/ (r1)from Tkinter import * from tkSimpleDialog import askstringfrom tkFileDialog  import asksaveasfilenamefrom tkMessageBox import askokcancel     class Quitter(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)  def quit(self):    ans = askokcancel('Verify exit', "Really quit?")    if ans: Frame.quit(self)class ScrolledText(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)  def makewidgets(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  def settext(self, text='', file=None):    if file:       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()                  def gettext(self):                    return self.text.get('1.0', END+'-1c')     class SimpleEditor(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'))  def onSave(self):    filename = asksaveasfilename()    if filename:      alltext = self.gettext()                 open(filename, 'w').write(alltext)       def onCut(self):    text = self.text.get(SEL_FIRST, SEL_LAST)        self.text.delete(SEL_FIRST, SEL_LAST)          self.clipboard_clear()           self.clipboard_append(text)  def onPaste(self):                      try:      text = self.selection_get(selection='CLIPBOARD')      self.text.insert(INSERT, text)    except TclError:      pass                     def onFind(self):    target = askstring('SimpleEditor', 'Search String?')    if target:      where = self.text.search(target, INSERT, END)       if where:                          print where        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()    except IndexError:    SimpleEditor().mainloop()

希望本文所述对大家的Python程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表