【问题标题】:Creating a find and color function in tkinter Python3 [duplicate]在 tkinter Python3 中创建查找和颜色函数 [重复]
【发布时间】:2018-04-12 07:05:05
【问题描述】:

你好,所以我想弄清楚如何在 tkinter 中创建一个查找功能。我确实想出了如何让 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)

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

【问题讨论】:

  • 我原本想把课程带到文本中,并弄清楚如何将我创建的全选代码转换为选择文本。但是 tkinter 的问题是当我使用 simpledialog.askstring 代码并按 OK 时,它不会再突出显示任何内容,因为 courser 不在文档上。
  • 我不认为 Tkinter 可以只使用一个文本记事本来做到这一点...您将不得不重新创建多个小部件并为每个小部件设置不同的背景颜色...您可能必须对文本进行切片隔离想要突出显示的单词
  • 你会建议如何去做我对 Python 还是很陌生,一般来说我只有 3 个月的时间。
  • 我的意思是对文本进行切片,因为这似乎对我未来的发展有所帮助
  • @GwendalGrelier:阅读如何在文本小部件文档中使用标签。

标签: python tkinter


【解决方案1】:

关于如何做的想法:

首先你拆分你的句子:

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]

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

【讨论】:

猜你喜欢
  • 2021-07-19
  • 2018-10-26
  • 1970-01-01
  • 1970-01-01
  • 2018-05-30
  • 2014-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多