python基於Tkinter庫實現簡單文字編輯器執行個體

來源:互聯網
上載者:User
本文執行個體講述了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程式設計有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.