在tkinter Python3中创建一个find和color函数

时间:2018-04-12 07:05:05

标签: python tkinter

你好,所以我想弄清楚如何在tkinter中创建一个find函数。我确实弄清楚如何让tkinter突出显示一个特定的搜索文本,但我有一些问题。让我们说他们在第3行有这个词它将突出显示第3行的所有行,因此它将突出显示第1行,第2行以及第3行的所有行。我正试图找出如何让它来选择单词。我也不认为我会以正确的方式强调它,因为他们无法右键单击并复制它,所以如果有人可以帮助我,我真的会感到它!

def find():
    findString = simpledialog.askstring("Find...", "Enter text")
    textData = notepad.get(0.0, END)        
    cannot = 'Can not find:' 
    find = findString
    cannotfind = cannot + " " + find 

    if findString in textData:
        notepad.tag_add(findString, 0.0, "END")
        notepad.tag_config(findString, background="blue", foreground="white")

    else:
        messagebox.showinfo('Not Found!', cannotfind)

*编辑我正在考虑而不是使用(0.0,END)找出如何将坐标存储在搜索文本的变量中,这将解决我的所有问题,但我不知道它是否可能。

1 个答案:

答案 0 :(得分:0)

如何做到这一点的想法:

首先你将你的句子分开:

my_sentence = "Python is so cool"
my_list = my_sentence.split() # returns ["Python","is","so","cool"]

然后你可以迭代这句话找到想要的词:

word_index = None
for i, word in enumerate(my_list):
    if word == my_test_string:
        word_index = i

您可以在所需的索引处剪切您的句子并将这些部分重新组合在一起:

string_start = my_list[0:word_index]
string_start = " ".join(string_start) 
string_end = my_list[word_index+1:]
string_end = " ".join(string_end)
my_word = my_list[word_index]

然后,您必须重新创建具有所需背景,颜色的标签......