Tkinter教程之Text篇(1)
jcodeer
|
1#
jcodeer 发表于 2007-10-03 22:05
Tkinter教程之Text篇(1)'''Tkinter教程之Text篇(1)''' '''1.创建第一个Text''' from Tkinter import * root = Tk() t = Text(root) t.pack() root.mainloop() #root中含有一Text控件,可以在这个控件内输入文本,可以使用Ctrl+C/V向Text内添加剪切板上的内容(文本),不接受Ctrl+Z执行操作 '''2.向Text中添加文本''' #insert方法添加文本内容 from Tkinter import * root = Tk() t = Text(root) #向第一行,第一列添加文本0123456789 t.insert(1.0,'0123456789') #向第一行第一列添加文本ABCDEFGHIJ t.insert(1.0,'ABCDEFGHIJ') t.pack() root.mainloop() #insert的第一个参数为索引;第二个为添加的内容 '''3.使用line.col索引添加内容''' #使用indexes来添加Text的内容 # -*- coding: cp936 -*- from Tkinter import * root = Tk() t = Text(root) # 向第一行,第一列添加文本0123456789 t.insert(1.0,'0123456789') t.insert('2.end','\n') # 向第一行第一列添加文本ABCDEFGHIJ t.insert(2.5,'ABCDEFGHIJ') t.pack() root.mainloop() # 可以看到使用indexes时,如果其值超过了Text的buffer值,程序不会抛出异常,它会使用向给定值靠近。 '''mark是用来表示在Text中位置的一类符号''' '''4.使用内置的mark控制添加位置''' #演示了内置的mark:INSERT/CURRENT/END/SEL_FIRST/SEL_LAST的用法 # -*- coding: cp936 -*- from Tkinter import * root = Tk() t = Text(root) #向Text中添加10行文本 for i in range(1,10): t.insert(1.0,'0123456789\n') #定义各个Button的回调函数,这些函数使用了内置的mark:INSERT/CURRENT/END/SEL_FIRST/SEL_LAST def insertText(): t.insert(INSERT,'jcodeer') def currentText(): t.insert(CURRENT,'jcodeer') def endText(): t.insert(END,'jcodeer') def selFirstText(): t.insert(SEL_FIRST,'jcodeer') def selLastText(): t.insert(SEL_LAST,'jcodeer') #INSERT Button(root, text = 'insert jcodeer at INSERT', command = insertText ).pack(fill = X) #CURRENT Button(root, text = 'insert jcodeer at CURRENT', command = insertText ).pack(fill = X) #END Button(root, text = 'insert jcodeer at END', command = endText ).pack(fill = X) #SEL_FIRST Button(root, text = 'insert jcodeer at SEL_FIRST', command = selFirstText ).pack(fill = X) #SEL_LAST Button(root, text = 'insert jcodeer at SEL_LAST', command = selLastText ).pack(fill = X) t.pack() root.mainloop() #几个内置的mark: #INSERT:光标的插入点 #CURRENT:鼠标的当前位置所对应的字符位置 #END:这个Text buffer的最后一个字符 #SEL_FIRST:选中文本域的第一个字符,如果没有选中区域则会引发异常 #SEL_LAST:选中文本域的最后一个字符,如果没有选中区域则会引发 异常 '''5.使用表达式来增强mark''' #表达式(expression)可以个性任何的Indexes,如下: ''' + count chars :前移count字符 - count chars :后移count字符 + count lines :前移count行 - count lines :后移count行 linestart:移动到行的开始 linesend:移动到行的结束 wordstart:移动到字的开始 wordend:移动到字的结束 ''' # 演示修饰符表达式的使用方法,如何与当前可用的indexes一起使用 # -*- coding: cp936 -*- from Tkinter import * root = Tk() t = Text() # 向第一行,第一列添加文本0123456789 for i in range(1,10): t.insert(1.0,'0123456789\n') a = 'test_mark' def forwardChars(): # 直接连接字符串 # t.mark_set(a,CURRENT + '+ 5 chars') t.mark_set(a,CURRENT + '+5c') def backwardChars(): # t.mark_set(a,CURRENT + '- 5 chars') t.mark_set(a,CURRENT + '-5c') def forwardLines(): # t.mark_set(a,CURRENT + '+ 5 lines) t.mark_set(a,CURRENT + '+5l') def backwardLines(): # t.mark_set(a,CURRENT + '- 5 lines) t.mark_set(a,CURRENT + '-5l') def lineStart(): # 注意linestart前面的那个空格不可省略 t.mark_set(a,CURRENT + ' linestart') def lineEnd(): # 注意lineend前面的那个空格不可省略 t.mark_set(a,CURRENT + ' lineend') def wordStart(): # 移动到当前字的开始。 t.mark_set(a,CURRENT + ' wordstart') def wordend(): # 移动到当前字的结束 t.mark_set(a,CURRENT + ' wordend') # mark:test_mark默认值为CURRENT t.mark_set(a,CURRENT) Button(root,text = 'forward 5 chars',command = forwardChars).pack(fill = X) Button(root,text = 'backward 5 chars',command = backwardChars).pack(fill = X) Button(root,text = 'forward 5 lines',command = forwardLines).pack(fill = X) Button(root,text = 'backward 5 lines',command = backwardLines).pack(fill = X) Button(root,text = 'line start',command = lineStart).pack(fill = X) Button(root,text = 'line end',command = lineEnd).pack(fill = X) Button(root,text = 'word start',command = lineEnd).pack(fill = X) Button(root,text = 'word end',command = lineEnd).pack(fill = X) # 测试三个位置的不同,CURRENT可以得知是当前光标的位置;mark就表示mark的位置了,INSERT好像一植都在1.0处没有改变。 def insertText(): t.insert(INSERT,'insert') def currentText(): t.insert(CURRENT,'current') def markText(): t.insert(a,'mark') Button(root,text = 'insert jcodeer.cublog.cn',command = insertText).pack(fill = X) Button(root,text = 'current jcodeer.cublog.cn',command = currentText).pack(fill = X) Button(root,text = 'mark jcodeer.cublog.cn',command = markText).pack(fill = X) t.pack() root.mainloop() |