本文实例讲述了python基于Tkinter库实现简单文本编辑器的方法。分享给大家供大家参考。具体实现方法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
## {{{ http://code.activestate.com/recipes/578568/ (r1) from Tkinter import * 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() |
希望本文所述对大家的Python程序设计有所帮助。