本文实例讲述了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程序设计有所帮助。