【发布时间】: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:阅读如何在文本小部件文档中使用标签。