python通過Tkinter庫實(shí)現(xiàn)的一個(gè)簡單的文本編輯器源碼

下邊資料是關(guān)于python通過Tkinter庫實(shí)現(xiàn)的一個(gè)簡單的文本編輯器的內(nèi)容。

from tkSimpleDialog import askstring

from tkFileDialog? import asksaveasfilename

from 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()?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容