Tkinter Text 查找文字

Tkinter Text 查找文字

在Text控件内可以使用search( )方法查找指定的字符串,这个方法会传回找到第一个指定字符串的索引位置。假设Text控件的对象是text,它的语法如下。

pos=text.search(key, startindex, endindex)

(1)pos:传回所找到的字符串的索引位置,如果查找失败则传回空字符串。

(2)key:所查找的字符串。

(3)startindex:查找起始位置。

(4)endindex:查找结束位置,如果查找到文档最后可以使用END。

示例1

查找文字的应用,所查找到的文字将用黄色底显示。

from tkinter import * 

def mySearch():
    text.tag_remove("found","1.0",END)
    start = "1.0"
    key = entry.get()

    if (len(key.strip()) == 0):
        return
    while True:
        pos = text.search(key,start,END)
        # print("pos= ",pos) # pos=  3.0  pos=  4.0  pos=     
        if (pos == ""):
            break
        text.tag_add("found",pos,"%s+%dc" %(pos,len(key)))
        start = "%s+%dc" % (pos,len(key))
        # print("start= ",start) # start=  3.0+3c  start=  4.0+3c

root = Tk() 
root.title("apidemos.com") 
root.geometry("300x180") 

root.rowconfigure(1,weight=1) 
root.columnconfigure(0,weight=1) 

entry = Entry() 
entry.grid(row=0,column=0,padx=5,sticky=W+E) 

btn = Button(root,text="Find",command=mySearch)
btn.grid(row=0,column=1,padx=5,pady=5)

# 建立Text 
text = Text(root,undo=True) 
text.grid(row=1,column=0,columnspan=2,padx=3,
                pady=5,sticky=N+S+W+E)
text.insert(END,"Five Hundred Miles\n")           # 插入时同时设置Tag
text.insert(END,"If you miss the rain I'm on,\n")
text.insert(END,"You will know that I am gone.\n")
text.insert(END,"You can hear the whistle blow\n")
text.insert(END,"A hundred miles,\n")

text.tag_configure("found", background="yellow")

root.mainloop() 

输出:

Tkinter Text 查找文字

对读者而言,陌生的第一个程序代码是第12行:

pos = text.search(key,start,END)

这个程序代码会查找key关键词,所查找的范围是text控件内容start索引至文件结束,若是查找到会传回key关键词出现的索引位置给pos。读者陌生的第二个程序代码是第15、16行,如下所示。

text.tag_add("found",pos,"%s+%dc" %(pos,len(key)))
start = "%s+%dc" % (pos,len(key))

上述第15行pos是加入标签的起始位置,标签的结束位置是一个索引的表达式。

"%s+%dc" % (pos,len(key))

上述是所查找到字符串的结束索引位置,相当于是pos位置加上key关键词的长度。程序第16行则是更新查找起始位置,为下一次查找做准备。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程