- '''''10.使用自定義mark對文本塊添加tag'''
- # -*- coding: utf-8 -*-
- # tag_add方法的使用
- from tkinter import *
-
- root = Tk()
- t = Text(root)
- # 創(chuàng)建一個TAG,其前景色為藍(lán)色
- t.tag_config('b', foreground='blue')
- for i in range(10):
- t.insert(1.0, '0123456789\n')
- # 自定義兩個mark,并使用它們來指定添加tag的文本塊
- t.mark_set('ab', '3.1')
- t.mark_set('cd', END)
- t.tag_add('b', 'ab', 'cd')
-
- t.pack()
- root.mainloop()
- # 先向Text中添加了10行文本,創(chuàng)建兩個mark('ab'和'cd'),將使用這兩個tag指定文本的文本塊使用此tag
- '''''11.使用indexes獲得Text中的內(nèi)容'''
- # -*- coding: utf-8 -*-
- # 分別使用內(nèi)置的indexes和自定義mark來獲取文本
- # get方法的使用
- from tkinter import *
-
- root = Tk()
- t = Text(root)
- for i in range(10):
- t.insert(1.0, str(i) + ' 0123456789\n')
- # 獲得1.0-2.3的文本
- print(t.get('1.0', '2.3'))
- # 自定義兩個mark,并使用它們來獲得文本塊
- t.mark_set('ab', '3.1')
- t.mark_set('cd', END)
- print(t.get('ab', 'cd'))
- t.pack()
- root.mainloop()
- '''''12.測試delete對tag的影響'''
- # -*- coding: utf-8 -*-
- # delete方法不會對tag造成影響,也就是說刪除文本與tag沒有任何關(guān)系
- from tkinter import *
-
- root = Tk()
- t = Text(root)
- # 創(chuàng)建一個TAG,其前景色為藍(lán)色
- t.tag_config('b', foreground='blue')
- for i in range(10):
- t.insert(1.0, str(i) + ' 0123456789\n')
- # 自定義兩個mark,并使用它們來指定添加tag的文本塊
- t.mark_set('ab', '3.1')
- t.mark_set('cd', END)
- t.tag_add('b', 'ab', 'cd')
- # 刪除(1.0 - 4.0)的文本
- t.delete('1.0', '4.0')
- t.pack()
- root.mainloop()
- # (1.0-4.0)的文本全部初始刪除了,剩余的文本全部以藍(lán)色顯示,即還保留tag的屬性
- '''''13.使用tag_delete對文本屬性的影響'''
- # -*- coding: utf-8 -*-
- # 使用tag_delete方法操作tag
- from tkinter import *
-
- root = Tk()
- t = Text(root)
- # 創(chuàng)建一個TAG,其前景色為藍(lán)色
- t.tag_config('b', foreground='blue')
- for i in range(10):
- t.insert(1.0, str(i)+' 0123456789\n')
- # 自定義兩個mark,并使用它們來指定添加tag的文本塊
- t.mark_set('ab', '3.1')
- t.mark_set('cd', END)
- t.tag_add('b', 'ab', 'cd')
- # 刪除tag 'b',注意這個操作是在tag_add之后進(jìn)行的。
- t.tag_delete('b')
- t.pack()
- root.mainloop()
- # 結(jié)果所有的文本沒有了tag('b')屬性,即tag_delete會清除所有與此tag相關(guān)的屬性,不論是之前還是之后
- '''''Tkinter教程之Text篇(3)'''
- '''''14.自定義tag的兩個內(nèi)置屬性'''''
- # tag.first:tag之前插入文本,此文本不包含在這個tag中
- # tag.last:tag之后插入文本,此文本包含在這個tag中
- # -*- coding: utf-8 -*-
- # 使用tag的內(nèi)置屬性來插入文本
- from tkinter import *
-
- root = Tk()
- t = Text(root)
- # 創(chuàng)建一個TAG,其前景色為藍(lán)色
- t.tag_config('b', foreground='blue')
- for i in range(10):
- t.insert(1.0, str(i) + ' 0123456789\n')
- # 自定義兩個mark,并使用它們來指定添加tag的文本塊
- t.mark_set('ab', '3.1')
- t.mark_set('cd', END)
- t.tag_add('b', 'ab', 'cd')
- # 刪除tag 'b',注意這個操作是在tag_add之后進(jìn)行的。
- # 在tag('b')之前插入'first'
- t.insert('b.first', 'first')
- # 在tag('b')之后插入'last'
- t.insert('b.last', 'last')
- t.pack()
- root.mainloop()
- # 注意:first沒有使用tag('b')屬性,last使用了tag('b')屬性
- '''''15.在Text中創(chuàng)建按鈕'''
- # -*- coding: utf-8 -*-
- # 使用window_create在Text內(nèi)創(chuàng)建一widget
- from tkinter import *
-
- root = Tk()
- t = Text(root)
- for i in range(10):
- t.insert(1.0, '0123456789 ')
-
-
- def printText():
- print('buttin in text')
-
-
- bt = Button(t, text='button', command=printText)
- # 在Text內(nèi)創(chuàng)建一個按鈕
- t.window_create('2.0', window=bt)
- # 沒有調(diào)用pack()
- # bt.pack()
- t.pack()
- root.mainloop()
- # 注意:使用window_create,而不是使用insert('2.0',bt);pack()也不用調(diào)用;
- # 點擊這個按鈕,打印出'button in text',證明這個按鈕是可以正常工作的。
- '''''16.在Text中創(chuàng)建一個圖像(未實現(xiàn))'''
- # -*- coding: utf-8 -*-
- # 使用window_create在Text內(nèi)創(chuàng)建一widget
- from tkinter import *
-
- root = Tk()
- t = Text(root)
- for i in range(10):
- t.insert(1.0, '0123456789\n')
- # 分別使用BitmapImage和PhotoImage進(jìn)行測試,均沒有顯示出圖像???
- # bm = BitmapImage('gray75')
- bm = PhotoImage('d:/1.png')
- # 在Text內(nèi)創(chuàng)建一個圖像
- t.image_create('2.0', image=bm)
- print(t.image_names())
- # 打印的圖像名稱都是正確的
- t.pack()
- root.mainloop()
- # 按照手冊中的說明未實現(xiàn)這種效果,原因不知。
- '''''17.綁定tag與事件'''
- # -*- coding: utf-8 -*-
- # 使用tag_bind方法
- from tkinter import *
-
- root = Tk()
- t = Text(root)
- for i in range(10):
- t.insert(1.0, '0123456789\n')
- # 創(chuàng)建一個tag
- t.tag_config('a', foreground='blue', underline=1)
-
-
- # Enter的回調(diào)函數(shù)
- def enterTag(event):
- print('Enter event')
-
-
- # 綁定tag('a')與事件('<Enter>')
- t.tag_bind('a', '<Enter>', enterTag)
- t.insert(2.0, 'Enter event ', 'a')
- t.pack()
- root.mainloop()
- # 注意:使用tag_bind綁定tag與事件,當(dāng)此事件在tag上發(fā)生時便就會調(diào)用這個tag的回調(diào)函數(shù)
- # 因為使用了Enter事件,此事件含有一個參數(shù),故將enterTag加了一個參數(shù),程序中不使用此參數(shù)
- '''''18.使用edit_xxx實現(xiàn)編輯常用功能(未實現(xiàn))'''
- # -*- coding: utf-8 -*-
- # 使用edit_xxx函數(shù)實現(xiàn)編輯常用功能
- from tkinter import *
-
- root = Tk()
- t = Text(root)
- for i in range(10):
- t.insert(1.0, '0123456789\n')
- t.pack()
-
-
- # 定義回調(diào)函數(shù)
- # 撤消回調(diào)函數(shù)
- def undoText():
- t.edit_undo()
-
-
- # 插入文本函數(shù)
- def insertText():
- t.insert(1.0, 'insert text')
-
-
- Button(root, text='undo', command=undoText).pack(fill=X)
- Button(root, text='insert text', command=insertText).pack(fill=X)
-
- root.mainloop()
- # 這個edit_undo方法也是不起作用,不知為何???
|