У меня есть текстовый виджет с тремя строками текста.Я хочу знать, в какой области текста находится курсор вставки. Я установил метки с помощью метода mark_set()
и попытался получить ближайшую предыдущую метку с помощью метода mark_previous()
, но предыдущая метка в списке всегда "тк :: anchor1" .Есть ли способ получить ближайшую предыдущую определенную пользователем метку к курсору?
Вот иллюстративный пример.Когда я нажимаю кнопку, я хочу, чтобы она распечатала область 1, 2 или 3 в зависимости от положения курсора.
import tkinter as tk
class Main(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.text = tk.Text()
self.text.pack()
self.strings = ["Region 1", "Region 2", "Region 3"]
for text in self.strings:
self.text.mark_set(text, "insert")
self.text.mark_gravity(text, "left")
self.text.insert("insert", "{}\n".format(text))
for mark in self.strings:
print(self.text.index(mark))
self.button = tk.Button(text="Find Region", command=self.find_region)
self.button.pack()
def find_region(self):
region = self.text.mark_previous("insert")
print("You are in region {}".format(region))
if __name__ == '__main__':
main = Main()
main.mainloop()
Обновлено - Второй цикл for
распечатывает индексы меток, как и ожидалось (1.0, 2.0, 3.0), но mark_previous не находит их.