Мне нужно выделить конкретное слово в тексте в рамке tkinter. Чтобы найти это слово, я помещаю баллис, как в html. Так в тексте, как «привет, я в | доме»? Я хочу выделить слово «дом».Как выделить конкретное слово в tkinter?
Моя рамка определяется так:
class FrameCodage(Frame): self.t2Codage = Text(self, height=20, width=50)
и вставить свой текст с этим кодом: fenetre.fCodage.t2Codage.insert(END, res)
, рес является переменной, содержащей мой текст.
Я видел этот код на другой пост в:
class CustomText(tk.Text):
'''A text widget with a new method, highlight_pattern()
example:
text = CustomText()
text.tag_configure("red", foreground="#ff0000")
text.highlight_pattern("this should be red", "red")
The highlight_pattern method is a simplified python
version of the tcl code at http://wiki.tcl.tk/3246
'''
def __init__(self, *args, **kwargs):
tk.Text.__init__(self, *args, **kwargs)
def highlight_pattern(self, pattern, tag, start="1.0", end="end",
regexp=False):
'''Apply the given tag to all text that matches the given pattern
If 'regexp' is set to True, pattern will be treated as a regular
expression.
'''
start = self.index(start)
end = self.index(end)
self.mark_set("matchStart", start)
self.mark_set("matchEnd", start)
self.mark_set("searchLimit", end)
count = tk.IntVar()
while True:
index = self.search(pattern, "matchEnd","searchLimit",
count=count, regexp=regexp)
if index == "": break
self.mark_set("matchStart", index)
self.mark_set("matchEnd", "%s+%sc" % (index, count.get()))
self.tag_add(tag, "matchStart", "matchEnd")
Но они кое-что я не понимаю: как я могу применить эту функцию в моем случае? Когда я назвал эту функцию? Каков шаблон и тег в моем случае? Я новичок в Tkinter, поэтому не стесняйтесь объяснять мне этот код или другое.
Спасибо, что помогли мне. «CustomText» присылает мне сообщение об ошибке «не определено». Кроме того, я не вводил свой текст в свой кадр в том же классе, что и FrameCodage. Затем, как я называю свою функцию? Я попробовал «FrameCodage.t2Codage.highlight_pattern (...)», но он не работает. Для того, чтобы быть уверенным, я должен определить тег сразу после «self.t2Codage = Text (self, height = 20, width = 50)»? – pioupiou1211
@ pioupiou1211: вам нужно добавить тег после создания виджета; перед его созданием невозможно позвонить. Неважно, где и когда вы вставляете текст. После того, как вы вставляете текст, вы можете вызвать метод 'highlight_text'. Это не произойдет автоматически. –
Хорошо, тогда я назвал метод, прежде чем вставлять текст, поскольку это не имеет значения. Но у меня есть эта ошибка: 'self.t2Codage.highlight_pattern (r" \ |. *? \ | "," Red ", regexp = True) AttributeError: объект 'Text' не имеет атрибута 'highlight_pattern'' – pioupiou1211