我有一个文本小部件,带有三行文本。我想知道“插入”光标当前位于文本的哪个区域。我使用mark_set()
方法设置了标记,并尝试使用mark_previous()
方法获得了最接近的上一个标记,但是尝试了列表始终是“ tk :: 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未找到它们。
答案 0 :(得分:0)
由于某种原因,直接使用“索引”标记似乎无效。但是,如果我将行更改为
region = self.text.mark_previous(self.text.index("insert"))
它工作正常且符合预期。