Ваш month.find()
возвращает 83. Это начальный индекс строки, равный 11, поэтому вы должны указать тегу начать с строки 83 в столбце 18 текстового поля. Что вы, вероятно, хотите сделать, это разделить month
на список строк. Это можно сделать с помощью splitlines()
. Затем мы записываем в a для l oop, чтобы проверить, в какой строке содержится день, и оттуда мы делаем row.find()
, чтобы получить правильный индекс столбца.
Сделайте снимок и дайте мне знать, если у вас есть какие-либо вопросы:
import tkinter as tk
import calendar
root = tk.Tk()
text = tk.Text()
text.pack()
text.tag_configure("dan", background='light grey', foreground='blue')
month = calendar.month(2020, 2, 2, 1)
text.insert('1.0', month)
datum = "2020 02 11"
d = datum.split()
y = int(d[0])
m = int(d[1])
day = d[2]
for ndex, row in enumerate(month.splitlines()):
if day in row:
col_index = row.find(day)
text.tag_add('dan', '{}.{}'.format(ndex+1, col_index), '{}.{}'.format(ndex+1, col_index + len(day)))
break
text.mainloop()
Результаты: